在 PHP 中使用 preg_replace 时,我怎样才能获得比赛?

How can I get at the matches when using preg_replace in PHP?

提问人:Polsonby 提问时间:8/5/2008 最后编辑:Andy LesterPolsonby 更新时间:2/10/2017 访问量:22053

问:

我正在尝试抓取几个单词的大写字母并将它们包装在 span 标签中。我将 preg_replace 用于提取和包装目的,但它没有输出任何东西。

preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
php 正则表达 html 解析 preg-replace

评论


答:

59赞 Polsonby 8/5/2008 #1

你需要把模式放在括号里,像这样:/([A-Z])/

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

评论

8赞 Bill the Lizard 6/24/2009
@Gumbo:回答你自己的问题是完全可以的,甚至是鼓励的,只要这个问题不是网站上另一个问题的重复。
0赞 rinogo 12/21/2019
替换字符串中的位是我需要的。谢谢!$1
8赞 Wedge 8/5/2008 #2

php.net 的preg_replace文档中:

替换可能包含以下参考文献 形式 \n 或(从 PHP 4.0.4 开始)$n, 后一种形式是 首选一个。每一个这样的参考 将被捕获的文本替换 按第 n 个括号内的模式。

请参阅 Flubba 的示例。

32赞 John Douthat 8/28/2008 #3

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

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

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

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

5赞 Dinah 6/24/2009 #4

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