我有一个用ajax和php制作的实时搜索脚本。它曾经用这个正则表达式来搜索英文字符:
$search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
如果搜索匹配,则该单词突出显示。
我想搜索土耳其字符,因此我将正则表达式代码更改为:
$search_string = preg_replace("/[^A-Za-z0-9ğıüşöçİĞÜŞÖÇ]/", " ", $_POST['query']);
它可以完美地搜索,但是在更改此代码后,如果找到了土耳其代码,则不会高亮显示,但是会英语显示。
这是突出显示的代码:
// Format Output Strings And Hightlight Matches
$display_name = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['musteri_adi']);
$display_function = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>",$result['musteri_telefon']) ;
$display_url = urlencode($result['musteri_id']);
$display_mail = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['musteri_mail']);
$display_tcno = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['musteri_tcno']);
我想我应该更改突出显示的代码,但我不知道该怎么办
这里有两个要考虑的要点:
应使用/u
修饰符声明正则表达式,以启用完整的Unicode支持
您执行的替换操作将不需要的字符替换为一个空格,而您可以使用以下命令将其完全删除 $search_string = preg_replace("/[^A-Za-z0-9ğıüşöçİĞÜŞÖÇ]/u", "", $keyword);
观看此IDEONE演示:
$keyword = 'Çınar ';
$search_string = preg_replace("/[^A-Za-z0-9ğıüşöçİĞÜŞÖÇ]/u", "", $keyword);
echo $search_string . PHP_EOL;
$musteri_adi = "Çınar, more and more words.";
$display_name = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $musteri_adi);
echo $display_name . PHP_EOL;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句