Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中从字符串中提取子字符串,直到它到达不同的字符?_Php_String_Substring - Fatal编程技术网

如何在PHP中从字符串中提取子字符串,直到它到达不同的字符?

如何在PHP中从字符串中提取子字符串,直到它到达不同的字符?,php,string,substring,Php,String,Substring,例如,我的字符串是: $str = "aaababca"; 我想得到一个子串,当它到达b时停止,这样我就可以得到 aaa 我如何才能做到这一点?如果您知道“b”是不同的字符,您有一个非常简单的解决方案: $substring = strstr($str, "b", true); 否则,您可能会在字符串中循环,直到找到与第一个不同的字符: $len = strlen($str); $substring = $str[0]; $i = 1; while($i < $len &&a

例如,我的字符串是:

$str = "aaababca";
我想得到一个子串,当它到达b时停止,这样我就可以得到

aaa
我如何才能做到这一点?

如果您知道
“b”
是不同的字符,您有一个非常简单的解决方案:

$substring = strstr($str, "b", true);
否则,您可能会在字符串中循环,直到找到与第一个不同的字符:

$len = strlen($str);
$substring = $str[0];
$i = 1;
while($i < $len && $str[$i] == $str[0]){
$substring .= $str[$i];
$i++;
}

为什么不能在字符串上迭代呢?(编纂是问题吗?@Theraot他们可以,但开销将是巨大的。@AlexeiAverchenko好吧,这个案件的正则表达式对我来说似乎也是开销。虽然我猜它是经过优化的C代码或类似的东西。@Theraot我在想strop:)
preg_match("/^([[:print:]])\\1+/", $str, $mat);
$substring = $mat[0];