在给定字符串上设置特定单词的函数?
如何给定给定字符串中的特定单词的样式?在给定字符串上设置特定单词的函数?
$myString = "foo bar";
如何使一个函数,大胆的给定单词如果在字符串中发现,除了返回字符串再次
$formattedString = Bold('foo',$myString);
echo $formattedString ;
预期结果:
富酒吧
我怎样才能做到这一点 ?我需要大胆一些关键字/搜索resut短语根据输入的用户查询
任何帮助,将不胜感激
你的意思是一样的名字:
function Bold($text, $str) {
return str_replace($text, "<strong>".$text."</strong>", $str);
}
echo Bold("test", "this is a test");
的simpliest方法是使用str_replace("foo", "<b>foo</b>", $string)
。
也可以使用RegExp
执行相同的操作。
UPDATE:为了有更先进的功能造型可以使用RegExp
下一个方法:
function bold($text, array $words) {
return preg_replace('/\b('.implode('|', $words).')\b/i', '<b>$1</b>', $text);
}
使用此功能,您可以风格在同一时间多个单词通过发送字的数组应该是bold
编。
UPDATE:此功能的高级先进的变体将是这样的:
function bold($text, $tag, array $words) {
return preg_replace('/\b('.implode('|', $words).')\b/i', '<'.$tag.'>$1</'.$tag.'>', $text);
}
这种方式可以bold
,italic
,strike
您的文本,甚至underline
通过向$tag
参数任何一组单词标签(b
为<b></b>
为如)
@ShikataGaNai,看看我的解决方案。它应该是你正在寻找的东西(它可以使用单词,而不是像'str_replace()'does_)那样设置字符。我们在项目中使用类似的方法。 – 2012-08-15 10:05:30
通过使用已发布的str_replace解决方案,当您的单词作为另一个单词的一部分被发现时,您将遇到问题。例如,在苏德赫的例子,如果$ STR将是“这是睾酮试验”(对不起,缺乏一个更好的例子)的输出将
这是一个测试与测试 osteron
因为你的字边界表达式来解决这个问题,你可以使用正则表达式:
function bold($string, $word)
{
return preg_replace('/\b'.$word.'\b/', '<strong>'.$word.'</strong>', $string);
}
echo bold('this is a test with testosteron', 'test');
该规则将匹配你的话,当它是由不能算话
的部分构件围我不认为这有助于字符串“这是一个测试与测试 osteron”或“这是一个测试与测试 osteron”,因为这仅搜索“测试”,而不是它的标签 – kushalbhaktajoshi 2012-08-15 05:22:49
我不认为这有助于字符串“这是一个测试”或“这是一个测试”,因为这只搜索“测试”,而不是它的标签 – kushalbhaktajoshi 2012-08-15 05:16:53