我想匹配字符串中的文本,而忽略它的字母大小寫。如果字母不一致,我的例子就會失敗。php:如何忽略preg_replace內的字母大小寫?
/*
$text: fOoBaR
$str: little brown Foobar
return: little brown <strong>Foobar</strong>
*/
function bold($text, $str) {
// This fails to match if the letter cases are not the same
// Note: I do not want to change the returned $str letter case.
return preg_replace('/('.str_replace(array("/", "\\"), array("\/", "\\"), $text).')/', "<strong>$1</strong>", $str);
}
$phrase = [
'little brown Foobar' => 'fOoBaR',
'slash/slash' => 'h/sl',
'spoon' => 'oO',
'capital' => 'CAPITAL',
];
foreach($phrase as $str => $text)
echo bold($text, $str) . '<br>';
符合正則表達式的字符串的整數部分添加修改'i'的正則表達式。 '')/''將會是'')/ i''。另外,使用regexp中的'$ text'代替'preg_quote'函數的結果更安全。所以..'preg_replace('/'。preg_quote($ text)。'/ i','$ 0',$ str);' – Cheery 2014-11-22 00:23:39
輝煌,感謝的傢伙。你昨天也幫助我。 :D你怎麼不寫你的答案作爲答案壽? – ditto 2014-11-22 00:25:01
我不喜歡寫太多的文字或者很多解釋。特別是當答案是單線時。 – Cheery 2014-11-22 00:26:49