2013-10-08 200 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; 

这将产生:

不够大胆是大胆不加粗再次