PHP preg_replace()大小写差异

时间:2014-07-08 21:05:59

标签: php preg-replace uppercase lowercase modifier

我有一个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”?

谢谢

2 个答案:

答案 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