使用preg_replace并保留部分搜索

时间:2012-05-23 21:37:42

标签: php regex

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

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

2 个答案:

答案 0 :(得分:2)

在替换字符串中使用back reference

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

// output: sld = mysite

来自manual的更多内容:

  

替换可能包含形式的引用\ n或(因为PHP   4.0.4)$ n,后一种形式是首选形式。每个这样的引用都将被第n个捕获的文本替换   括号模式。 n可以是0到99,而\ 0或$ 0是指   整个模式匹配的文本。计算开括号   从左到右(从1开始)获得的数量   捕获子模式。要替换使用反斜杠,必须使用反斜杠   加倍(“\\”PHP字符串)。

答案 1 :(得分:2)

以下是我的评论示例:

<?php

$result = preg_replace("/(matched)/", 'before$1after', "matched");

echo $result;

输出:beforematchedafter

http://codepad.org/PANzOm6c