PHP,突出显示关键字的一部分,而不是整个单词


PHP, highlight part of keyword instead of the whole word

我有一段代码,在搜索功能中突出显示关键字。而不是,我希望能够突出的关键字,即使它是文本的一个词的一部分。例如,如果我搜索"el"并找到单词"hello",则显示为hello .

代码如下:

function highlight_keywords($content, $keywords) {
    if (!is_array($keywords)) {
    $keywords = explode(' ', $keywords);
    }
    foreach ($keywords as $keyword) {
    if (trim($keyword) !== '') {
        $content = preg_replace('/'b(' . preg_quote($keyword) . ')'b/i',     '<span>'1</span>', $content);
    }
    }
    return $content;
}

试试这个:

$content = preg_replace('/(' . preg_quote($keyword) . ')/is','<span>$1</span>', $content);

为方便起见,您可以直接使用str_replace()

$keywords = array('el');
$string = 'hello world';
foreach($keywords as $keyword){
    $string = str_ireplace($keyword, '<b>' . $keyword . '</b>', $string);
}
// $string is now: h<b>el</b>lo world