我正在尝试为我的搜索功能实现此代码,该代码将在结果中突出显示匹配的关键字。它工作得很好,但问题是它不会突出显示具有特殊标记的关键字,如:
$ text =“iphonemới”;
问题1:如果关键字是“mới”,它将在$ text中突出显示单词“mới”。但如果关键字是“moi”,它就不会突出显示它。顺便说一句,mới=我的语言中的新词。那么如何调整此代码才能使其正常工作?
问题2:还有如何使它突出显示$ text中的单词部分,如:if关键字是“iph”,它还会在$ text中突出显示iphone单词的iph。
非常感谢提前...... !!!
<?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("/\b($word)\b/i", '<span class="highlight_word">\1</span>', $text);
}
/*** return the text ***/
return $text;
}
/*** example usage ***/
$text = 'This text will highlight PHP and SQL and sql but not PHPRO or MySQL or sqlite';
/*** an array of words to highlight ***/
$words = array('php', 'sql');
/*** 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 $string; ?>
答案 0 :(得分:0)
试试这段代码,
function highlightWords($str, $replaceWord)
{
$new = '<span class="highlight_word">'.$replaceWord.'</span>';
$str = preg_replace_callback( "/$replaceWord/", function( $match) use( $new) {
return $new;
}, $str);
return $str;
}