我有一個函數,它使用preg_match來檢查子字符串是否在另一個字符串中。 今天,我意識到如果子字符串具有像特殊正則表達式字符(。\ + *?[^] $(){} =!| | - - )或@的尾部特殊字符,我的preg_match甚至找不到子字符串儘管它在那裏。preg_match:找不到具有尾部特殊字符的子字符串
This works,returns「A match was found。」
$find = "website scripting";
$string = "PHP is the website scripting language of choice.";
if (preg_match("/\b" . $find . "\b/i", $string)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
但是這不,返回「找不到匹配」。
$find = "website scripting @";
$string = "PHP is the website scripting @ language of choice.";
if (preg_match("/\b" . $find . "\b/i", $string)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
我試過preg_quote,但它沒有幫助。
謝謝你的任何建議!
編輯:字邊界是必需的,這就是爲什麼我使用\ b。我不想在「智能手機」中找到「手機」。
'preg_quote'應該工作,你可以重複出'preg_quote($找到)'' – MarshallOfSound
將preg_quote'無法正常工作,因爲你有'末\ B'。如果您不需要檢查末尾的單詞邊界,請將其刪除。 –
這完全不清楚你想要什麼樣的行爲,像')@#* $ ek2'或'abc%'或'abcdef'(注意最後一個空格)。 – nhahtdh