如何在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];