58

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

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

4 回答 4

59

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

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
于 2008-08-05T00:36:08.350 回答
32

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

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

与往常一样,您可以转到php.net/preg_replace或 php.net/<whatever search term> 快速搜索文档。引用文档:

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

于 2008-08-28T09:02:43.480 回答
8

来自php.net 上的preg_replace 文档:

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

请参阅 Flubba 的示例。

于 2008-08-05T01:39:36.460 回答
5

在您想要的捕获周围使用括号。

于 2009-06-23T17:54:51.450 回答