2

我尝试突出显示所有单词匹配,例如

示例:输入是đã然后所有单词将被突出显示đã đà Đà Đã

但只是đã亮点。

在此处输入图像描述

这是我的完整代码

<?php
header( 'Content-Type: text/html; charset=UTF-8' );

function highlightWords($text, $words) {
    $text = preg_replace("|($words)|Ui", "<span class=\"highlight_word\">$1</span>", $text);
    return $text;
}
$string = 'đã đà Đà Đã';
$words = 'đã';
$string =  highlightWords($string, $words);
?>

<html>
<head>
<title>PHPRO Highlight Search Words</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
.highlight_word{
        background-color: yellow;
}
</style>
</head>
<body>
 <?php echo $string; ?>
</body>
</html>

如何突出显示所有单词(utf-8)匹配(例如示例)谢谢。

4

1 回答 1

2

您只看到第一个突出显示的原因是因为您使用的是U(PCRE_UNGREEDY) 修饰符,我认为这是造成混淆的原因。我假设您打算使用u(PCRE_UTF8) 修饰符,它将模式字符串视为UTF-8. 有关详细信息,请参阅各种“模式修饰符”。

尝试u (PCRE_UTF8)在您的preg_replace函数中使用如下,您应该会看到所有突出显示的单词:

function highlightWords($text, $words) {
    $text = preg_replace("|($words)|ui", "<span class=\"highlight_word\">$1</span>", $text);
    return $text;
}

这是这个的phpfiddle

于 2013-09-01T14:10:42.377 回答