我正在尝试查找另一个字符串中存在的子字符串列表。
这就是我的想法:
preg_match_all("/foot|ball|football/", "I like football", $results);
结果:
array(
0 => array(
0 => "foot",
1 => "ball"
)
)
如您所见,它与foot
和ball
相匹配,但与football
不匹配
我尝试了不同的标志,php选项和正则表达式的顺序,没有运气。
我无法让他们全部匹配。
我发现单个角色只能匹配一次。
它可以搜索“bacwards”,例如,如果我将正则表达式更改为/ball|foot|football/
在脚前移动球,两者都将匹配但足球不会。
此外,我已尝试使用PCRE(php)和Javascript - 相同的结果。
我可以将它们全部匹配吗?
答案 0 :(得分:1)
要匹配所有结果,您可以使用以下代码:
$allMatches = [];
$words = ['foot', 'ball', 'football'];
foreach ($words as $word) {
if (preg_match("/$word/", 'I like football', $result)) {
$allMatches = array_merge($allMatches, $result);
}
}
print_r($allMatches);
这个问题是由于足球中足部和球的存在,所以你应该分别测试每个单词。