我们如何仅通过 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.
我正在尝试分离一个非常长的字符串,其起始标记为 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.