如何使用preg_replace(或类似方法)替换和更新PHP?

时间:2018-06-27 02:23:06

标签: php regex preg-replace

我想遍历一个数组,将包含标记的特定键/值对转换为HTML。

因此,$ comment ['comment_text']的示例值为:

This has *bolded* text

并且应该成为:

This has <strong>bolded</strong> text

这是我尝试过的:

$pattern = "/\*\b.*?\b\*/i";
$newComment = preg_replace($pattern, "<strong>$&</strong>", 
$comment['comment_text']);

我得到的是什么

  

其中包含 $&文本

我意识到我正在用PHP混合Javascript,但是阅读有关PHP中的反向引用的信息并没有使事情变得更清楚。

我的字符串可能具有多个加粗(在标记中)的实例...

任何帮助表示赞赏。

更新: 抱歉-我没有意识到Stackoverflow会将星号转换为斜体。我将示例转换为代码。

此外,我的困惑还在于使用$ 0对比$ 1。我仍然不完全了解。我以为数字是字符串中的匹配项...所以,如果您有5个实例,则可以用$ 0到$ 4来引用它们。

如果您使用$ 0,您会得到:

This has <strong>*bolded*</strong> text

但是,如果您使用$ 1,则会得到理想的结果。

1 个答案:

答案 0 :(得分:0)

执行此操作。

 $pattern = "/\*\b(.*?)\b\*/";
 $newComment = preg_replace($pattern, "<strong>$1</strong>", $comment['comment_text']);

这里$1是指第1组比赛。在这里,我假设您想将**之间的文本加粗。