如何设定给定字符串中特定单词的样式?
$myString = "foo bar";
如果在字符串中找到一个给定单词加粗的函数,那么如何再次返回字符串
$formattedString = Bold('foo',$myString);
echo $formattedString ;
预期结果:
foo bar
我该怎么做?我需要根据键入的用户查询在搜索结果中加粗一些关键字/短语
任何帮助将不胜感激
答案 0 :(得分:1)
你的意思是:
function Bold($text, $str) {
return str_replace($text, "<strong>".$text."</strong>", $str);
}
echo Bold("test", "this is a test");
答案 1 :(得分:0)
最简单的方法是使用str_replace("foo", "<b>foo</b>", $string)
。
此外,RegExp
可用于执行相同的操作。
更新:要为样式提供更高级的功能,您可以使用RegExp
下一步:
function bold($text, array $words) {
return preg_replace('/\b('.implode('|', $words).')\b/i', '<b>$1</b>', $text);
}
使用此功能,您可以通过发送应该bold
编辑的单词数组,一次样式多个单词。
更新:此功能的高级高级变体如下所示:
function bold($text, $tag, array $words) {
return preg_replace('/\b('.implode('|', $words).')\b/i', '<'.$tag.'>$1</'.$tag.'>', $text);
}
通过向bold
参数传输名称,您可以italic
,strike
,underline
您的文字甚至$tag
任意一组字词标记({em> b
用于<b></b>
,例如)
答案 2 :(得分:-1)
通过使用发布的str_replace解决方案,当您的单词作为另一个单词的一部分被发现时,您将遇到问题。例如,在Sudhir的例子中,如果$ str将是“这是一个使用testosteron的测试”(抱歉,缺少一个更好的例子)输出将是
测试 测试 osteron
要解决此问题,您可以使用正则表达式,因为您有单词边界表达式:
function bold($string, $word)
{
return preg_replace('/\b'.$word.'\b/', '<strong>'.$word.'</strong>', $string);
}
echo bold('this is a test with testosteron', 'test');
当该单词被不能被视为单词部分的元素包围时,该规则将匹配您的单词