我正在尝试使用php和mysql进行搜索。我想在搜索结果获取后标记关键字。
我可以像这样不区分大小写。
echo str_ireplace($keyword,'<mark>'.$keyword.'</mark>',$data["text"]);
我有一些字符的问题。
例如
如果我的关键字是 şef 并且我的文本有 Şef,我无法替换
其他一些例子
关键字 ağaç text AĞAÇ关键字 ŞİRİN text şirin
我想取代每一个想法,但我没有。我该怎么做?
如果您的输入是 utf-8,请尝试通过设置 i
和 u
标志来preg_replace不区分大小写的 unicode 正则表达式:
$search = '/'.preg_quote($keyword, "/").'/iu';
echo preg_replace($search, '<mark>'0</mark>', $data["text"]);
可能需要在搜索词前后添加'b
字词边界。
根据评论更新
为了将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"]);
请参阅 eval.in 上的示例