我已将此代码应用于我的搜索功能。它目前工作得很好。但是,如果我输入没有重音字母的关键字,则不会突出显示该字词。
实施例: $ text ="iphonemới"
如果我输入关键字" moi",它就不会突出显示“"mới"在$ text中。我也试过你在谷歌中作为建议的标志,但它也没有用。请帮忙......
这是我的代码:
<?php
function highlightWords($text, $words)
{
/*** loop of the array of words ***/
foreach ($words as $word)
{
/*** quote the text for regex ***/
$word = preg_quote($word);
/*** highlight the words ***/
$text = preg_replace("/($word)/ui", '<span class="highlight_word">\1</span>', $text);
}
/*** return the text ***/
return $text;
}
/*** example usage ***/
$text = 'this is my iphone mới';
/*** an array of words to highlight ***/
$words = array('moi');
/*** highlight the words ***/
$highlighttext = highlightWords($string, $words);
?>
<html>
<head>
<title>PHPRO Highlight Search Words</title>
<style type="text/css">
.highlight_word{
background-color: pink;
}
</style>
</head>
<body>
<?php echo $highlighttext; ?>
答案 0 :(得分:0)
您可以使用此代码:
setlocale(LC_ALL, 'en_US');
$word = iconv("utf-8","ascii//TRANSLIT",$word);
/*** quote the text for regex ***/
这将删除$word
中的所有变音符号。
然后,您可以遍历每个字符并将其替换为字符类(如果字符具有替代形式)。例如,o
变为[ớọơờớòo]
。
注意:nhahtdh说得好。我不知道这些变音符号来自何种语言,更不用说任何字符应该成为具有不同变音符号的字符。
如果您想沿着该行执行某些操作,请不要展开$word
并添加重音字符规则,例如:ơ
变为[ờớơ]
。