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

时间:2008-08-05 00:35:17

标签: php regex html-parsing preg-replace

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

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

4 个答案:

答案 0 :(得分:51)

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

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

答案 1 :(得分:28)

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

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

与往常一样,您可以转到php.net/preg_replace或php.net/<无论搜索字词是什么&gt;快速搜索文档。说明文件:

  

\ 0或$ 0表示整个模式匹配的文本。

答案 2 :(得分:8)

来自php.net上的preg_replace documentation

  

替换可能包含对的引用   表格\ n或(自PHP 4.0.4起)$ n,   后者的形式是   首选的。每个这样的参考   将被捕获​​的文本取代   通过第n个括号模式。

见Flubba的例子。

答案 3 :(得分:6)

在所需捕获周围使用括号。