如何在PHP中使用preg_replace时获得匹配结果?

我试图抓住几个字的大写字母并将它们包裹在span标签中。我正在使用 preg_replace 进行提取和包装,但不会输出任何内容。

preg_replace("/[A-Z]/", "$1", $str)
0
额外 编辑
意见: 3

4 答案

从php.net上的 preg_replace文档

替换可以包含的引用   窗体\ n或(自PHP 4.0.4开始)$ n,   后者的形式是   首选。每个这样的参考   将被捕获​​的文本取代   由第n个括号内的模式。

看Flubba的例子。

0
额外

您需要将模式放在括号 /([A-Z])/ 中,如下所示:

preg_replace("/([A-Z])/", "$1", $str)
0
额外
@Gumbo:只要问题不是网站上的另一个问题的重复,回答自己的问题就非常好,甚至鼓励。
额外 作者 Bill the Lizard,

围绕您想要的捕捉使用括号。

0
额外

\0 will also match the entire matched expression without doing an explicit capture using parenthesis.

preg_replace("/[A-Z]/", "\\0", $str)

As always, you can go to php.net/preg_replace or php.net/ to search the documentation quickly. Quoth the documentation:

\ 0或$ 0指的是整个模式匹配的文本。

0
额外