【发布时间】:2010-09-05 07:55:12
【问题描述】:
我试图抓住几个单词的大写字母并将它们包装在跨度标签中。我使用preg_replace 进行提取和包装,但它没有输出任何内容。
preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
【问题讨论】:
标签: php regex html-parsing preg-replace
我试图抓住几个单词的大写字母并将它们包装在跨度标签中。我使用preg_replace 进行提取和包装,但它没有输出任何内容。
preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
【问题讨论】:
标签: php regex html-parsing preg-replace
你需要把模式放在括号里/([A-Z])/,像这样:
preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
【讨论】:
$1 位是我需要的。谢谢!
\0 也将匹配整个匹配的表达式,而无需使用括号进行显式捕获。
preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)
与往常一样,您可以前往php.net/preg_replace 或 php.net/
\0 或 $0 指的是整个模式匹配的文本。
【讨论】:
在您想要的捕获周围使用括号。
【讨论】:
来自 php.net 上的preg_replace documentation:
replacement 可能包含 形式 \n 或(自 PHP 4.0.4 起)$n, 后一种形式是 首选。每一个这样的参考 将被捕获的文本替换 由第 n 个带括号的模式。
参见 Flubba 的示例。
【讨论】: