这是我的问题:
$keyword = "md";
$pattern = "/'W" . $keyword . "{1}|" . $keyword . "{1}'W/i";
$str = "asdfmd";
$result = preg_match_all($pattern, $str);
出于某种原因,此模式适用于 http://regex101.com/#pcre 和 http://www.regextester.com/但是当我在代码上使用它时,它找不到匹配项。知道为什么会这样吗?提前感谢您的回复!
其他在线工作的$str:"mdasdf"、"mdasdf"、"asdfmd"。
更新:希望这有所帮助。这是我对正则表达式101的输入
Test: /'Wmd|md'W/gi
Strings:
mdasas*
mdasas*
asmdas
asasmd*
asasmd *
asasmd*
注意:倒数第二个字符串有一个尾随空格,* 表示在正则表达式 101 中找到
所以我弄清楚了发生了什么。这些网站上的文本输入区域被视为一个长字符串,这就是为什么匹配项在不应该显示的时候显示的原因。我匹配了错误的令牌。再次感谢您的帮助!
-W
请阅读 http://php.net/manual/en/function.preg-match-all.php
也许你必须写preg_match_all($pattern, $str, $result);
我写maybe
是因为我不知道你真正想得到什么。检查PHP 5.4.0
参数matches
之前是否不是可选的。
UPD
对于字符串的start
和end
,请尝试使用简单的"/^".$keyword."|".$keyword."$/i"