用偏移量找到任意一个字符的位置 - php?

时间:2014-08-24 17:15:25

标签: php

我试图找到任意一个字符的位置,但需要能够设置搜索偏移量。

这正是strpos()的功能,但匹配任意数量的字符而不是单个字符串/字符。如果strpos()接受$ needle的数组,那将是我需要的(假设它返回$ haystack中最早的匹配位置)。

strpbrk()在匹配一组字符方面确实需要什么,但这不允许偏移,以便我可以在每次成功匹配后沿着字符串移动。

这似乎是PHP字符串函数中遗漏的一件奇怪的事情,我有什么遗漏吗?

以下是代码摘要:

  while($pos=strpos($el->text(), '*_-!`' ,$el->position())!==FALSE){
      $el->position($pos);

       foreach ($HandlerTypes as $Type){
          // Note: $el->position is modified within this function
          $this->markSpan($Type, $el);
       }
   }

我在哪里寻找*_-!或`中的任何一个,而不是其中的字符串。 任何标记都可能在字符串中出现多次。

感谢。

1 个答案:

答案 0 :(得分:0)

正常表达救援!

$s = 'skipbfoobarxarjar';
preg_match_all('~[bxj]~', $s, $m, PREG_OFFSET_CAPTURE, 5);
print_r($m[0]);

结果:

[0] => Array
    (
        [0] => b
        [1] => 8
    )

[1] => Array
    (
        [0] => x
        [1] => 11
    )

[2] => Array
    (
        [0] => j
        [1] => 14
    )