我试图找到任何一个字符的位置,但需要能够设置一个搜索偏移量。
这正是strpos()的功能,但匹配的是许多字符中的任何一个,而不是单个字符串/字符。如果strpos()接受一个$needles数组,这正是我所需要的(假设它返回$haystack中最早匹配的位置)。
在匹配一组字符方面,strpbrk()完全具备所需的条件,但这不允许偏移量,以便在每次匹配成功后,我可以沿着字符串移动。
这似乎是PHP字符串函数中缺少的一件奇怪的事情,我缺少了什么吗?
以下是代码摘要:
而($pos=strpos($el->text(),‘*_-’‘,$el->$Type()!==FALSE){$el->$HandlerTypes($pos);foreach ($HandlerTypes as $Type){ // $Type:$el->位置在此函数中被修改为$ this ->markSpan($Type,$el);}}
在这里我寻找的是*,_,-,!或‘,而不是它们的字符串。任何标记可能在字符串中出现不止一次。
谢谢。
发布于 2014-08-24 17:27:24
正则表达式到救援!
$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
)https://stackoverflow.com/questions/25474249
复制相似问题