【发布时间】:2013-09-26 08:31:31
【问题描述】:
是否有正则表达式可以匹配带有和不带特殊字符的特定字符串?可以这么说,对特殊字符不敏感。
就像céra 将匹配cera,反之亦然。
有什么想法吗?
编辑:我想匹配带有和不带有特殊/重音字符的特定字符串。不仅仅是任何字符串/字符。
测试示例:
$clientName = 'céra';
$this->search = 'cera';
$compareClientName = strtolower(iconv('utf-8', 'ascii//TRANSLIT', $clientName));
$this->search = strtolower($this->search);
if (strpos($compareClientName, $this->search) !== false)
{
$clientName = preg_replace('/(.*?)('.$this->search.')(.*?)/iu', '$1<span class="highlight">$2</span>$3', $clientName);
}
输出:<span class="highlight">céra</span>
如您所见,我想突出显示特定的搜索字符串。但是,我仍然想显示匹配字符串的原始(重音)字符。
我想我必须以某种方式将它与 Michael Sivolobov's answer 结合起来。
我想我必须使用单独的 preg_match() 和 preg_replace(),对吧?
【问题讨论】:
-
é不是特殊字符,而是重音字母。 -
我正在尝试匹配特定的字符串,而不仅仅是任何字符串/字符。对困惑感到抱歉。我更新了我的问题。
-
我也根据@Michael Sivolobov 的建议更新了我的答案。