如何給定給定字符串中的特定單詞的樣式?在給定字符串上設置特定單詞的函數?
$myString = "foo bar";
如何使一個函數,大膽的給定單詞如果在字符串中發現,除了返回字符串再次
$formattedString = Bold('foo',$myString);
echo $formattedString ;
預期結果:
富酒吧
我怎樣才能做到這一點 ?我需要大膽一些關鍵字/搜索resut短語根據輸入的用戶查詢
任何幫助,將不勝感激
如何給定給定字符串中的特定單詞的樣式?在給定字符串上設置特定單詞的函數?
$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