这是我的问题:
$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”。
更新: 希望这会有所帮助。这是我对regex101的输入
Test: /\Wmd|md\W/gi
Strings:
mdasas*
mdasas*
asmdas
asasmd*
asasmd *
asasmd*
注意:倒数第二个字符串有一个尾随空格,*表示在regex101中找到
答案 0 :(得分:1)
请阅读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"
答案 1 :(得分:1)
所以我弄清楚发生了什么。这些网站上的文本输入区域被视为一个长字符串,这就是为什么匹配在不应该出现时显示的原因。我正在使用错误的令牌。再次感谢您的帮助!
-W