使用preg_replace并保留部分搜索


Using preg_replace and preserving part of search

使用 preg_match,您可以使用 <name>,它会将其添加到输出数组中。

对于preg_replace,我想匹配一个 url,例如 "http://<url>'s",然后将该 url 保留在替换字符串中,例如 "beforetheurl<url>aftertheurl"

这是我评论的一个例子:

<?php
$result = preg_replace("/(matched)/", 'before$1after', "matched");
echo $result;

输出:beforematchedafter

http://codepad.org/PANzOm6c

在替换字符串中使用反向引用。

echo preg_replace('#http://('w+).*$#', 'sld = $1', 'http://mysite.com');
// output: sld = mysite

手册中的更多内容:

替换可能包含 ' 或 (因为 PHP 4.0.4)$n,后一种形式是首选形式。每个此类引用都将替换为第 n 个捕获的文本 括号模式。n 可以是 0 到 99,''0 或 $0 表示 与整个模式匹配的文本。左括号被计算在内 从左到右(从1开始)得到的编号 捕获子模式。要使用反斜杠代替,它必须是 双倍("''''" PHP 字符串)。