我有一个PHP / Ajax搜索功能,可以返回包含在文本框中输入的字符的所有国家/地区。列出了所有这些国家/地区,并且在列表中的名称所在的国家/地区中,给定字符标记为粗体。
实施例 文本框中给出的字符:“Af” 返回 Af ghanistan和South Af rica - 没有课程之间的空间
现在数据库中的所有国家/地区名称都以大写字母开头。但是
的preg_replace()
无法找到大写和小写字母之间的区别。因此,当我在文本框中输入“a”时,它将返回Afgh a nist a n注意第一个大写字母“A”未设为粗体 < / p>
这是我正在使用的代码
$display_name = preg_replace("/" . $search_string . "/", "<b>" . $search_string . "</b>", $result['Country_Name']);
$display_url = '';
$output = str_replace('NameReplace', $display_name, $HTML);
$output = str_replace('UrlReplace', $display_url, $output);
echo($output);
我可以“解决”这个问题,将“/ i”修饰符添加到preg_replace()根据PHP.net,它将执行以下操作:
我(PCRE_CASELESS) 如果设置了此修饰符,则模式中的字母将匹配大写和小写字母。
这会根据文本框中的字符将国家/地区名称中的粗体字符变为小写或大写
例如: 文本框中给出的字符:“A”将返回“ A fgh A nist A n” 而“a”将再次返回“ a fgh a nist a n”,请忽略空格。
当我输入时,我怎么能做到:“a” 它将返回“ A fgh a nist a n”?
谢谢
答案 0 :(得分:1)
改变这个:
$display_name = preg_replace("/" . $search_string . "/", "<b>" . $search_string . "</b>", $result['Country_Name']);
到此:
$display_name = preg_replace("/(" . $search_string . ")/i", '<b>$1</b>', $result['Country_Name']);
答案 1 :(得分:0)
试试这个:
echo preg_replace("/a/i", "<b>\1</b>", "Afghanistan");
以HTML格式输出:
A fgh a nist a n