0

我有这个突出关键字的功能。它工作得很好,但它似乎不适用于单引号和双引号。

function highlight($input, $keywords) {

    // Hello Mr Regex
    preg_match_all('~\w+~', $keywords, $match);

    // If there's no match
    if(!$match) { return $input; }

    // Case sensitive search
    //$result = '~\\b(' . implode('|', $match[0]) . ')\\b~';

    // Case insenstive search
    $result = '~\\b(' . implode('|', $match[0]) . ')\\b~i';

    // Return highlighted text
    return preg_replace($result, '<strong>$0</strong>', $input);

}

$keywords = "just another what's little's test";

$input = "here what what's just looking little's another's this's for another one that requires a test";


结果:这里什么只是看起来很少的另一个另一个需要测试


在此示例中,不应突出显示this 上's


我也尝试过同时使用htmlspecialchars()输入和关键字,但这似乎也不匹配。

有任何想法吗?

4

1 回答 1

2

\w只有字母、数字和下划线。如果要包含引号或撇号,可以创建一个字符类:

preg_match_all('~[\w\'"]+~' ...
于 2013-03-16T19:16:27.573 回答