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

Translate

我正在尝试抓住几个单词的大写字母,然后将它们包裹在span标签中。我在用preg_replace用于提取和包装,但不输出任何内容。

preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
This question and all comments follow the "Attribution Required."

所有的回答

Translate

您需要将模式放在括号中/([A-Z])/, 像这样:

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

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

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

与往常一样,您可以php.net/preg_replace或php.net/ <任何搜索词>可以快速搜索文档。查阅文档:

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

来源
Translate

来自preg_replace文档在php.net上:

替代可能包含\ n或(自PHP 4.0.4起)$ n形式的引用,后一种形式是首选形式。每个此类引用将被第n个括号模式捕获的文本替换。

请参阅Flubba的示例。

来源
Translate

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

来源
下一个问题:
c# -.NET单元测试包?