我需要从一个字符串分开显示的每个字,即使字符串是只有一个字突出显示多个关键字。从给定的字符串
$keyword = 'should be bolded';
$string = 'This shouldbebolded';
预期结果:
“这shouldbebolded。” 这是谷歌喜欢的亮点。
我需要从一个字符串分开显示的每个字,即使字符串是只有一个字突出显示多个关键字。从给定的字符串
$keyword = 'should be bolded';
$string = 'This shouldbebolded';
预期结果:
“这shouldbebolded。” 这是谷歌喜欢的亮点。
你可以做到这一点使用 explode
, foreach
和 str_replace
:
<?php
# Keywords
$keywords_str = 'tv nice';
# String
$string = 'My tv is nice';
# Operation result(to not modify $string)
$result = $string;
# Split $keywords by spaces into array of single keywords
$keywords = explode(' ', $keywords_str);
# Loop keywords array
foreach($keywords as $keyword)
{
# Replace every keyword occurence to make it bold
$result = str_replace($keyword, "<b>$keyword</b>", $result);
}
echo $result;
?>
其结果将是:
我电视是不错
一个简单的功能就足以满足您的要求。你可以将你的单词分解成一个数组来分别搜索它们。
只需使用explode()
功能,打破你的话到数组并把它传递到下面的功能。
function highlightWords($string, $words)
{
foreach ($words as $word)
{
$string = str_ireplace($word, '<span class="highlight">'.$word.'</span>', $string);
}
return $string;
}
谢谢,我将使用该函数,因为我需要它在多个地方。问候。 – 2012-02-18 17:28:33