PHP:如何使用stripos查找(用户定义的)字符串出现位置

时间:2011-06-30 21:49:24

标签: php

找到第一次出现的strpos()和找到最后一次出现的strrpos()。

This教程解释说,使用循环可能会发生任何事情,但当大海捞针很大时,这可能并不快。我的代码现在看起来很难看。

有没有办法在没有环绕干草堆的情况下找到第二,第三,第四等发生?我的意思是,直接找到所需的事件而不循环?可能的?

2 个答案:

答案 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将是一个包含匹配字符串

的偏移量和副本的数组