我正在使用PHP來查找以特殊正則表達式字符開頭的字符串是否作爲文本字符串中的單詞出現。這是PHP代碼:如何使用PHP搜索以特殊正則表達式字符開始/結尾的單詞字符串?
$subject = " hello [hello [helloagain ";
$pattern = preg_quote("[hello");
if (preg_match("/\b" . $pattern . "\b/", $subject, $dummy)) {
echo "match";
} else {
echo "no match";
}
模式以字符[,因此,preg_quote()用於轉義它。有一個的實例[你好作爲主題中的一個詞,所以應該有一個匹配,但上面的preg_match()返回不匹配。我認爲原因是在這個主題中,一個特殊字符不被認爲是一個單詞的開始或結束,但我想不出任何想法?謝謝。
非常感謝。它解決了這個問題,但我寧願不列出所有可能的分隔符。我還需要計算主題中模式的出現次數。我嘗試了一個稍微修改的主題,如下所示: '$ subject =「hello [hello [hello [helloagain';' '$ pattern = preg_quote(」[hello「);' 'echo preg_match_all(」/( (\ s | $)/「,$ subject,$ dummy);' preg_match_all()返回1而不是2(現在有兩個實例 [你好主題由一個空格分隔),爲什麼? – user646234 2012-03-15 20:08:40
@ user646234:正則表達式匹配不能重疊。爲了解決這個問題,請使用前瞻。我已經更新了答案。備註供將來參考:如果您在開始時陳述完整要求,您將得到更好的答案。 – 2012-03-15 20:10:08
再次感謝馬克。 – user646234 2012-03-15 20:26:45