找到第一次出现的strpos()和找到最后一次出现的strrpos()。
This教程解释说,使用循环可能会发生任何事情,但当大海捞针很大时,这可能并不快。我的代码现在看起来很难看。
有没有办法在没有环绕干草堆的情况下找到第二,第三,第四等发生?我的意思是,直接找到所需的事件而不循环?可能的?
答案 0 :(得分:3)
您可以使用正则表达式,但它不会比使用strpos循环更快。
if (preg_match_all("/(match this string)/g",$string,$matches))
{
echo $matches[0] ; // this is the whole string
echo $matches[1] ; // first match
echo $matches[2] ; // second match
echo $matches[3] ; // and so on
}
如果您要替换这些事件,请使用str_replace()
。这样你就不必担心抵消了。
答案 1 :(得分:2)
您可以将preg_match()
与PREG_OFFSET_CAPTURE标志一起使用,以便它捕获所有匹配项以及它们在源字符串中的位置。
preg_match('/your string/', $source, $matches, PREG_OFFSET_CAPTURE);
$ matches将是一个包含匹配字符串
的偏移量和副本的数组