PHP preg_replace将** xyz **转换为<b> xyz </b>

时间:2010-10-25 21:51:18

标签: php regex preg-replace non-greedy

为了好玩,我决定做一些类似于降价的东西。凭借我过去使用正则表达式的小经验,我知道它们是多么强大,所以它们将成为我所需要的。

所以,如果我有这个字符串:

    Hello **bold** world

如何使用preg_replace将其转换为:

    Hello <b>bold</b> world

我假设这样的事情?

    $input = "Hello **bold** world";
    $output = preg_replace("/(\*\*).*?(\*\*/)", "<b></b>", $input);

4 个答案:

答案 0 :(得分:9)

关闭:

$input = "Hello **bold** world";
$output = preg_replace("/\*\*(.*?)\*\*/", "<b>$1</b>", $input);

答案 1 :(得分:2)

我相信有一个用于渲染Markdown的PHP包。而不是自己动手,尝试使用已编写和测试的现有代码集。

答案 2 :(得分:1)

嗯,我想这可以起作用

$output = preg_replace('/\*\*(.*?)\*\*/', '<b>$1</b>', $input);

您找到所有序列**something**,然后用粗体标记找到整个序列,并在其中($1)替换第一个捕获的组(表达式中的括号)。

答案 3 :(得分:0)

$output = preg_replace("/\*\*(.*?)\*\*/", "<b>$1</b>", $input);