我正在尝试使用php和mysql进行搜索。 我想在搜索结果获得后标记关键字。
我可以像这样做不区分大小写。
echo str_ireplace($keyword,'<mark>'.$keyword.'</mark>',$data["text"]);
我有些问题。
例如
如果我的关键字是şef并且我的文字有Şef我无法替换
其他一些例子
关键字ağaçtextAĞAÇ 关键字ŞİRİN文本şirin
我想取代每一个想法,但我没有。我该怎么办?
答案 0 :(得分:0)
如果您的输入为utf-8,请设置i
和u
preg_replace,尝试unicode regex不区分大小写的flags:
$search = '/'.preg_quote($keyword, "/").'/iu';
echo preg_replace($search, '<mark>\0</mark>', $data["text"]);
可能希望在搜索字词之前和之后添加\b
word boundaries。
根据评论更新
还要将sirin
与搜索字ŞİRİN
匹配,可能需要构建正则表达式模式:
$kw_map = array(
'/[cç]/iu' => "[cç]",
'/[iİ]/iu' => "[iİ]",
'/[gğ]/iu' => "[gğ]",
'/[sş]/iu' => "[sş]",
# ...add more here
);
构建模式:
$keyword = "ŞİRİN";
$search = '/'.preg_replace(array_keys($kw_map), array_values($kw_map), $keyword).'/iu';
如果您echo $search
看起来像/[sş][iİ]R[iİ]N/iu
;现在替换:
echo preg_replace($search, '<mark>\0</mark>', $data["text"]);