Php 检查字符串是否以某些单词开头,如果是,则将其拆分 $str='fooo';//
尝试:Php 检查字符串是否以某些单词开头,如果是,则将其拆分 $str='fooo';//,php,regex,arrays,string,Php,Regex,Arrays,String,尝试: 此解决方案遍历$words数组,并检查$str是否以任何单词开头。如果找到匹配项,则将$str减少到$w并中断 Array ( [0] => foo [1] => oo ) 使用示例中的$words和$str: foreach ($words as $w) { if ($w == substr($str, 0, strlen($w))) { $str=$w; break; } } 结果: $pie
此解决方案遍历
$words
数组,并检查$str
是否以任何单词开头。如果找到匹配项,则将$str
减少到$w
并中断
Array
(
[0] => foo
[1] => oo
)
使用示例中的
$words
和$str
:
foreach ($words as $w) {
if ($w == substr($str, 0, strlen($w))) {
$str=$w;
break;
}
}
结果:
$pieces = preg_split('/^('.implode('|', $words).')/',
$str, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
这将需要从C#翻译成PHP,但这将为您指明正确的方向。谢谢!你知道我怎么能做同样的事,但反过来吗?我的意思是检查字符串是否以words@Alex,如果删除
^
(行标记的开头)并在最后一个/
之前将其替换为$
(行标记的结尾):'/('.introde('|',$words.))$/'
foreach ($words as $w) {
if ($w == substr($str, 0, strlen($w))) {
$str=$w;
break;
}
}
$pieces = preg_split('/^('.implode('|', $words).')/',
$str, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
array(2) {
[0]=>
string(3) "foo"
[1]=>
string(2) "oo"
}
string[] MaybeSplitString(string[] searchArray, string predicate)
{
foreach(string str in searchArray)
{
if(predicate.StartsWith(str)
return new string[] {str, predicate.Replace(str, "")};
}
return predicate;
}