我试图找到任意一个字符的位置,但需要能够设置搜索偏移量。
这正是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); } }
我在哪里寻找*
,_
,-
,!
或`中的任何一个,而不是其中的字符串。
任何标记都可能在字符串中出现多次。
感谢。
答案 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
)