Php 突出显示关键字而不区分大小写?

Php 突出显示关键字而不区分大小写?,php,Php,我成功地使用此选项突出显示关键字 function highlight($str, $keywords) { $keywords2 = $keywords; $keywords = preg_replace('/\s\s+/', ' ', strip_tags(trim($keywords))); // filter $str = str_replace($keywords2,"<strong>$keywords2</strong>",$str); $var =

我成功地使用此选项突出显示关键字

 function highlight($str, $keywords)
{

$keywords2 = $keywords;
$keywords = preg_replace('/\s\s+/', ' ', strip_tags(trim($keywords))); // filter

$str = str_replace($keywords2,"<strong>$keywords2</strong>",$str);


$var = '';

foreach(explode(' ', $keywords) as $keyword)
{
$replacement = "<strong>".$keyword."</strong>";
$var .= $replacement." ";

$str = str_ireplace(" ".$keyword." ", " ".$replacement." ", $str);
$str = str_ireplace(" ".$keyword, " ".$replacement, $str);

}

$str = str_ireplace(rtrim($var), "<strong>".$keywords."</strong>", $str);

return $str;

}
函数突出显示($str,$keywords)
{
$keywords2=$keywords;
$keywords=preg_replace('/\s\s+/','',strip_标记(trim($keywords));//过滤器
$str=str\u替换($keywords2,“$keywords2”,$str);
$var='';
foreach(将(“”,$keywords)分解为$keyword)
{
$replacement=“”$关键字。“”;
$var.=$replacement.“;
$str=str_-ireplace(“$keyword.”、“$replacement.”、$str);
$str=str_ireplace(“$keyword,”“$replacement,$str);
}
$str=str_-ireplace(rtrim($var),“”、$keywords.”、$str);
返回$str;
}

但是,它区分大小写。如何使它在不区分大小写的情况下工作?

这应该适合您了。它希望关键字是一个字符串,中间有空格

显然,如果这是用户输入,那么您需要以某种方式转义该输入

function highlight($str, $keywords) {

    // Convert keywords to an array of lowercase keywords
    $keywords = str_replace(' ', ',', $keywords);
    $keywordsArray = explode(',', strtolower($keywords));

    // if any lowercase version of a word in the string is found in the
    // keywords array then wrap that word in <strong> tags in the string
    foreach (explode(' ', $str) as $word) {
        if (in_array(strtolower($word), $keywordsArray)) {
            $str = str_replace("$word ", "<strong>$word</strong> ", $str);
        }
    }

    return $str;
}
将输出:

<strong>the</strong> quick <strong>brown</strong> <strong>fox</strong> jumped over Mr <strong>Brown</strong> <strong>the</strong> lazy dog
那只敏捷的布朗狐狸跳过了布朗先生那只懒狗

这应该适合您了。它希望关键字是一个字符串,中间有空格

显然,如果这是用户输入,那么您需要以某种方式转义该输入

function highlight($str, $keywords) {

    // Convert keywords to an array of lowercase keywords
    $keywords = str_replace(' ', ',', $keywords);
    $keywordsArray = explode(',', strtolower($keywords));

    // if any lowercase version of a word in the string is found in the
    // keywords array then wrap that word in <strong> tags in the string
    foreach (explode(' ', $str) as $word) {
        if (in_array(strtolower($word), $keywordsArray)) {
            $str = str_replace("$word ", "<strong>$word</strong> ", $str);
        }
    }

    return $str;
}
将输出:

<strong>the</strong> quick <strong>brown</strong> <strong>fox</strong> jumped over Mr <strong>Brown</strong> <strong>the</strong> lazy dog
那只敏捷的布朗狐狸跳过了布朗先生那只懒狗

这应该适合您了。它希望关键字是一个字符串,中间有空格

显然,如果这是用户输入,那么您需要以某种方式转义该输入

function highlight($str, $keywords) {

    // Convert keywords to an array of lowercase keywords
    $keywords = str_replace(' ', ',', $keywords);
    $keywordsArray = explode(',', strtolower($keywords));

    // if any lowercase version of a word in the string is found in the
    // keywords array then wrap that word in <strong> tags in the string
    foreach (explode(' ', $str) as $word) {
        if (in_array(strtolower($word), $keywordsArray)) {
            $str = str_replace("$word ", "<strong>$word</strong> ", $str);
        }
    }

    return $str;
}
将输出:

<strong>the</strong> quick <strong>brown</strong> <strong>fox</strong> jumped over Mr <strong>Brown</strong> <strong>the</strong> lazy dog
那只敏捷的布朗狐狸跳过了布朗先生那只懒狗

这应该适合您了。它希望关键字是一个字符串,中间有空格

显然,如果这是用户输入,那么您需要以某种方式转义该输入

function highlight($str, $keywords) {

    // Convert keywords to an array of lowercase keywords
    $keywords = str_replace(' ', ',', $keywords);
    $keywordsArray = explode(',', strtolower($keywords));

    // if any lowercase version of a word in the string is found in the
    // keywords array then wrap that word in <strong> tags in the string
    foreach (explode(' ', $str) as $word) {
        if (in_array(strtolower($word), $keywordsArray)) {
            $str = str_replace("$word ", "<strong>$word</strong> ", $str);
        }
    }

    return $str;
}
将输出:

<strong>the</strong> quick <strong>brown</strong> <strong>fox</strong> jumped over Mr <strong>Brown</strong> <strong>the</strong> lazy dog
那只敏捷的布朗狐狸跳过了布朗先生那只懒狗

您似乎对您的解决方案有点困惑,请尝试此解决方案(适用于任何情况,但可能需要扩展以下关键字提供的特殊字符):

函数highlightKeywords($str,$keywords){
$keywordsArray=explode(“”,strip_标签(trim($keywords));
foreach($keywordsArray作为$keyword){
$str=preg\u replace(“/($keyword)([\s\.\,])/i“,“$1$2”,$str);
}
返回$str;
}

(假设关键字以空格分隔,如示例代码中所示)

您似乎对解决方案有点困惑,请改为尝试此方法(适用于任何情况,但可能需要扩展以下关键字可用的特殊字符):

函数highlightKeywords($str,$keywords){
$keywordsArray=explode(“”,strip_标签(trim($keywords));
foreach($keywordsArray作为$keyword){
$str=preg\u replace(“/($keyword)([\s\.\,])/i“,“$1$2”,$str);
}
返回$str;
}

(假设关键字以空格分隔,如示例代码中所示)

您似乎对解决方案有点困惑,请改为尝试此方法(适用于任何情况,但可能需要扩展以下关键字可用的特殊字符):

函数highlightKeywords($str,$keywords){
$keywordsArray=explode(“”,strip_标签(trim($keywords));
foreach($keywordsArray作为$keyword){
$str=preg\u replace(“/($keyword)([\s\.\,])/i“,“$1$2”,$str);
}
返回$str;
}

(假设关键字以空格分隔,如示例代码中所示)

您似乎对解决方案有点困惑,请改为尝试此方法(适用于任何情况,但可能需要扩展以下关键字可用的特殊字符):

函数highlightKeywords($str,$keywords){
$keywordsArray=explode(“”,strip_标签(trim($keywords));
foreach($keywordsArray作为$keyword){
$str=preg\u replace(“/($keyword)([\s\.\,])/i“,“$1$2”,$str);
}
返回$str;
}


(假设关键字以空格分隔,如示例代码所示)

我想您需要
preg\u replace
上的
I
参数<代码>预替换('/\s\s+/i',…)我想您需要
preg\u replace
上的
I
参数<代码>预替换('/\s\s+/i',…)我想您需要
preg\u replace
上的
I
参数<代码>预替换('/\s\s+/i',…)我想您需要
preg\u replace
上的
I
参数<代码>预替换('/\s\s+/i',…)就像一个符咒。只有一个问题。它使strtolower所有突出显示的关键字。无论如何要避免吗?@user198989我已经更新了答案,以保留字符串中单词的大小写。您忘记在foreach之后添加{。而且,它没有突出显示:/@user198989缺少的{是一个拼写错误,可能是什么让它对您不起作用。我现在已经测试过了,它很好。我将它用作突出显示($句子,“使这些突出显示”);但它没有添加强标记,只是现在尝试了。效果很好。只有一个问题。它使strtolower所有突出显示的关键字。是否要避免这种情况?@user198989我已更新了答案以保留字符串中单词的大小写。您忘记添加了吗{就在foreach之后。而且,它没有突出显示:/@user198989缺少的{是一个打字错误,可能是什么让它对你不起作用。我现在已经测试过了,它工作正常。我将它用作突出显示($句子,“使这些突出显示”);但它没有添加强标记,只是现在就尝试。效果很好。只有一个问题。它会使strtolower所有突出显示的关键字。无论如何,为了避免这种情况?@user198989我更新了答案,以保留我输入的单词的大小写