我们如何仅通过 PHP 中的起始字符分隔字符串

How can we separate string by only its starting characters in PHP

我正在尝试分离一个非常长的字符串,其起始标记为 2424... 这是一个功能

protected function StartTagCheckAndNeglect($hex)
       {
       try {

        $token = strtok($hex, "2424");

        while ($token !== false) {
            echo "$token<br>";
            $token = strtok("(2424)");
        }

    } catch (Exception $e) {
        echo $e->getMessage();
    }

}

$hex 有很长的十六进制字符串...问题是 而不是只分隔以 2424 开头的字符串....它会拆分任何以 2 或4. 示例:24246778672552dd455 它给出:4677867, 55, dd, 55 我想要的是一个字符串中的 6778672552dd455 直到下一个 2424.Any 更好的解决方案会有所帮助。

您可以只使用 preg_split 将数据拆分为数组。

$hex = '24246778672552dd45524248763257490823508lale9794382';
$hexarray = preg_split("/(2424)/", $hex);
print_r($hexarray);

// expected result
// Array ( [0] => [1] => 6778672552dd455 [2] => 8763257490823508lale9794382 )

一个简单的方法是使用 explode() 并以 2424 作为分隔符。然后你可以检查第一个元素是否为空(所以在第一个2424之前没有任何东西)并且有超过1个元素(使用count())...

$test = "24246778672552dd4552424a123";

$results = explode("2424", $test);
if ( empty($results[0]) && count($results) > 1 )   {
    //found
    array_shift($results);   // Remove empty element
    print_r($results);
}

输出...

Array
(
    [0] => 6778672552dd455
    [1] => a123
)

strtok() 的问题是它会根据字符串中的任何字符拆分字符串,因此它将拆分为 2 或 4 而不是 2424。从手册...

strtok() splits a string (str) into smaller strings (tokens), with each token being delimited by any character from token.