PHP 5 正则表达式 - 在在线编辑器中查找匹配项,但不在本地代码中查找匹配项


PHP 5 Regex - finding match in online editor but not in local code

这是我的问题:

$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

对于字符串的startend,请尝试使用简单的"/^".$keyword."|".$keyword."$/i"