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

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

preg_replace("/[AZ]/", "<span class=\"initial\">$1</span>", $str) 

你需要把模式放在圆括号/([AZ])/ ,像这样:

 preg_replace("/([AZ])/", "<span class=\"initial\">$1</span>", $str) 

\0也将匹配整个匹配的expression式,而不使用圆括号进行显式捕获。

 preg_replace("/[AZ]/", "<span class=\"initial\">\\0</span>", $str) 

和往常一样,你可以去php.net / preg_replace或php.net / <任何search词>来快速search文档。 记下文件:

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

从php.net上的preg_replace文档 :

replace可以包含\ n或(自PHP 4.0.4以上)$ nforms的引用,后者是首选forms。 每个这样的参考文献将被第n个括号内的模式所取代的文本所取代。

看Flubba的例子。

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