【发布时间】:2020-07-16 19:58:06
【问题描述】:
我尝试同时执行一些单词以突出显示这些单词。但问题是有时但并非所有时间都在执行代码。 我使用的代码在这里:
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 是我想要突出显示的一个或多个单词。这里我对通过提问 make first letter caps in php but ucfirst(strtolower('string')) does not work 制作的第一个字母大写有些怀疑。但是从这个解决方案中,只有我重新排列了上面的代码。但我面临的问题是,当我通过$text='Vegetarische cup a Soup' 和$keyword='cup a soup' 时,我得到以下代码正在执行:
Vegetarische an style='font-weight:700;color:#151313;'>cupan> a Soup
谁能帮我解决这个错误。
【问题讨论】:
-
@gpl 如果代码工作正常,那么为什么它会在两者之间执行代码而不是突出显示关键字?
-
@kerbh0lz 如果我们输入一个句子,那么该句子也希望被突出显示,如果它是一个单词,那么该单词应该被突出显示
-
@RiggsFolly 它不会产生错误。
-
@RiggsFolly 无法编辑它:/ 所以我删除了它
-
@gpl 我终于让它工作了。如果有人希望我可以指出它在哪里。
标签: php html function loops highlight