在 PHP 中使用 preg_replace 时如何获得匹配项?
-
08-06-2019 - |
题
我试图抓住几个单词的大写字母并将它们包装在 span 标签中。我在用 预替换 用于提取和包装目的,但它不输出任何内容。
preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
解决方案
您需要将模式放在括号中 /([A-Z])/
, , 像这样:
preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
其他提示
\0
还将匹配整个匹配表达式,而无需使用括号进行显式捕获。
preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)
一如既往,您可以前往 php.net/preg_replace 或 php.net/<任意搜索词> 快速搜索文档。引用文档:
\0 或 $0 指的是整个模式匹配的文本。
来自 preg_replace 文档 在 php.net 上:
替代品 可能包含表格 n或(由于PHP 4.0.4)$ n的引用,后者是首选的表单。这样的每个引用将被N'th括号模式捕获的文本所取代。
请参阅 Flubba 的示例。
在您想要的捕获周围使用括号。
不隶属于 StackOverflow