尝试突出显示 php 中的某些单词时出现代码执行错误
getting the code executed error while trying to highlight some words in php
我试图一起执行一些单词以突出显示这些单词。但问题有时但并非总是在执行代码。
我使用的代码在这里:
function highlightKeywords($text, $keyword) {
$pos = strpos($text, $keyword);
$wordsAry = explode(" ", $keyword);
$wordsCount = count($wordsAry);
for ($i = 0; $i < $wordsCount; $i++) {
if ($pos === false) {
if ($i === 0) {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . ucfirst(strtolower($wordsAry[$i])) . "</span>";
} else {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . strtolower($wordsAry[$i]) . "</span>";
}
} else {
if ($i === 0) {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . strtolower($wordsAry[$i]) . "</span>";
} else {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . $wordsAry[$i] . "</span>";
}
}
$text = str_ireplace($wordsAry[$i], $highlighted_text, $text);
}
return $text;
}
这里的 $text 是我传递的整个文本,$keyword 是我想要的一个或多个单词 highlight.Here 我对通过提问将首字母大写表示怀疑。但是从这个解决方案中,我只重新排列了上面的代码。但是我面临的问题是当我通过 $text='Vegetarische cup a Soup'
和 $keyword='cup a soup'
时,我得到了以下代码的执行:
Vegetarische an style='font-weight:700;color:#151313;'>cupan> a Soup
谁能帮我解决这个错误。
检查这个函数。希望它会有所帮助。您可以根据需要更改 CSS。
<style>
#keyword{
font-weight: bold;
color: red;
background-color: yellow;
}
</style>
<?php
function highlightKeywords($keyword, $text) {
$filteredKeyword = trim(strip_tags($keyword));
$wordsAry = explode(" ", $text);
$wordsCount = count($wordsAry);
for ($i = 0; $i < $wordsCount; $i++)
if(strcasecmp($filteredKeyword, $wordsAry[$i]) == 0)
$wordsAry[$i] = "<span id=\"keyword\">" . $wordsAry[$i] . "</span>";
return implode(" ", $wordsAry);
}
?>
这是我在 tomelliott.com
的代码中使用的答案
function highlightkeywords($str, $search) {
//$highlightcolor = "#daa732";
$occurrences = substr_count(strtolower($str), strtolower($search));
$newstring = $str;
$match = array();
for ($i=0;$i<$occurrences;$i++) {
$match[$i] = stripos($str, $search, $i);
$match[$i] = substr($str, $match[$i], strlen($search));
$newstring = str_replace($match[$i], '[#]'.$match[$i].'[@]', strip_tags($newstring));
}
$newstring = str_replace('[#]', '<span style="font-weight:700;color:#151313;">', $newstring);
$newstring = str_replace('[@]', '</span>', $newstring);
return $newstring;
}
这里我可以转义 html 标签以及我在 Whosebug 中的其他问题的答案,以保持区分大小写 在 php 中首字母大写但是 ucfirst (strtolower('string')) 不起作用
我试图一起执行一些单词以突出显示这些单词。但问题有时但并非总是在执行代码。 我使用的代码在这里:
function highlightKeywords($text, $keyword) {
$pos = strpos($text, $keyword);
$wordsAry = explode(" ", $keyword);
$wordsCount = count($wordsAry);
for ($i = 0; $i < $wordsCount; $i++) {
if ($pos === false) {
if ($i === 0) {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . ucfirst(strtolower($wordsAry[$i])) . "</span>";
} else {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . strtolower($wordsAry[$i]) . "</span>";
}
} else {
if ($i === 0) {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . strtolower($wordsAry[$i]) . "</span>";
} else {
$highlighted_text = "<span style='font-weight:700;color:#151313;'>" . $wordsAry[$i] . "</span>";
}
}
$text = str_ireplace($wordsAry[$i], $highlighted_text, $text);
}
return $text;
}
这里的 $text 是我传递的整个文本,$keyword 是我想要的一个或多个单词 highlight.Here 我对通过提问将首字母大写表示怀疑$text='Vegetarische cup a Soup'
和 $keyword='cup a soup'
时,我得到了以下代码的执行:
Vegetarische an style='font-weight:700;color:#151313;'>cupan> a Soup
谁能帮我解决这个错误。
检查这个函数。希望它会有所帮助。您可以根据需要更改 CSS。
<style>
#keyword{
font-weight: bold;
color: red;
background-color: yellow;
}
</style>
<?php
function highlightKeywords($keyword, $text) {
$filteredKeyword = trim(strip_tags($keyword));
$wordsAry = explode(" ", $text);
$wordsCount = count($wordsAry);
for ($i = 0; $i < $wordsCount; $i++)
if(strcasecmp($filteredKeyword, $wordsAry[$i]) == 0)
$wordsAry[$i] = "<span id=\"keyword\">" . $wordsAry[$i] . "</span>";
return implode(" ", $wordsAry);
}
?>
这是我在 tomelliott.com
的代码中使用的答案function highlightkeywords($str, $search) {
//$highlightcolor = "#daa732";
$occurrences = substr_count(strtolower($str), strtolower($search));
$newstring = $str;
$match = array();
for ($i=0;$i<$occurrences;$i++) {
$match[$i] = stripos($str, $search, $i);
$match[$i] = substr($str, $match[$i], strlen($search));
$newstring = str_replace($match[$i], '[#]'.$match[$i].'[@]', strip_tags($newstring));
}
$newstring = str_replace('[#]', '<span style="font-weight:700;color:#151313;">', $newstring);
$newstring = str_replace('[@]', '</span>', $newstring);
return $newstring;
}
这里我可以转义 html 标签以及我在 Whosebug 中的其他问题的答案,以保持区分大小写 在 php 中首字母大写但是 ucfirst (strtolower('string')) 不起作用