在给定字符串上设置特定单词的函数?

问题描述:

如何给定给定字符串中的特定单词的样式?在给定字符串上设置特定单词的函数?

$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"); 
+0

我不认为这有助于字符串“这是一个测试”或“这是一个测试”,因为这只搜索“测试”,而不是它的标签 – kushalbhaktajoshi 2012-08-15 05:16:53

的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); 
} 

这种方式可以bolditalicstrike您的文本,甚至underline通过向$tag参数任何一组单词标签(b<b></b>为如

+0

@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'); 

该规则将匹配你的话,当它是由不能算话

的部分构件围
+0

我不认为这有助于字符串“这是一个测试测试 osteron”或“这是一个测试测试 osteron”,因为这仅搜索“测试”,而不是它的标签 – kushalbhaktajoshi 2012-08-15 05:22:49