2013-10-08 142 views
5

我想製作一個PHP函數,它可以在兩個星號之間創建文本粗體,並在一個星號之間加上斜體,(非常類似於編輯器,在stackoverflow中)在星號之間設置粗體字

同樣的規則適用,如果*和單詞之間存在空格,則不應該呈現。

誰能幫我一把嗎? 我試過了,但我只是走了這麼遠,因爲我不知道如何製作奇數星號「< b>」和偶數的「</b>」。

(不含空格我打不了他們,計算器將呈現的文本加粗......)

$thenewtext = str_replace("**", "<b>", "**Hello World** of PHP"); 
+1

正則表達式將窩rk這個簡單的例子。但請考慮選擇解析器。使用正則表達式與HTML [可以驅動一些人喝](http://stackoverflow.com/a/1732454/13895)。 – John

+0

@John:OP似乎正在將純文本*轉換爲* HTML,而不是解析HTML,所以正則表達式應該很好。 – FtDRbwLXw6

回答

9

一個簡單的正則表達式會做的伎倆:

$thenewtext = preg_replace('#\*{2}(.*?)\*{2}#', '<b>$1</b>', '**Hello World** of PHP'); 
0

我不是太熟悉,但你要需要一個正則表達式。看看preg_replace()

我最近實現了一個服務器端文本高亮系統來補充jQuery UI的自動完成。

我你的想法的適應將是這樣的:

$txt = 'not bold [BeginBold]Yes Bold[EndBold] not bold again'; 

$newtxt = str_replace("[BeginBold]", "<b>", $txt); 
$newtxt = str_replace("[EndBold]", "</b>", $txt); 
echo $newtxt; 

這將產生:

不夠大膽是大膽不加粗再次