2012-08-15 32 views
-1

如何給定給定字符串中的特定單詞的樣式?在給定字符串上設置特定單詞的函數?

$myString = "foo bar"; 

如何使一個函數,大膽的給定單詞如果在字符串中發現,除了返回字符串再次

$formattedString = Bold('foo',$myString); 
echo $formattedString ; 

預期結果:

酒吧

我怎樣才能做到這一點 ?我需要大膽一些關鍵字/搜索resut短語根據輸入的用戶查詢

任何幫助,將不勝感激

回答

1

你的意思是一樣的名字:

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

0

的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

-1

通過使用已發佈的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

相關問題