使用preg_replace而不破坏id信息

时间:2010-07-29 17:17:40

标签: php regex wordpress preg-replace

我正在尝试破解我正在开发的Wordpress模板中的一些侧边栏代码。基本上我已经在输出缓冲区中捕获了我需要的东西,并且我正在运行正则表达式以用我需要的代码替换位。问题是我的正则表达式知识只是我需要实现的一点点。

我遇到的问题是:

$output = preg_replace('/<\/li><li id=".*?" class="widget-container/', '<a href="top">Top</a></li><li><li id="[item from that find]" class="widget-container/', $input);

目前代码代表我可以找到我需要的东西,但它会破坏那些id属性,因为我无法捕获它们。

我确信我有一种方法可以在替换中捕获并使用它,但我找不到任何能告诉我需要什么的内容,或者我是否采用了preg_replace的错误方法。

如何在不破坏这些独特ID的情况下使用它来更改代码?

干杯!

3 个答案:

答案 0 :(得分:1)

您需要使用后退参考。使用()捕获id,然后用$ 1引用捕获...见下文:

$output = preg_replace('/<\/li><li id="(.*?)" class="widget-container/', '<a href="top">Top</a></li><li><li id="$1" class="widget-container/', $input);

答案 1 :(得分:0)

将要匹配的模式包装在()中并使用$ 1

答案 2 :(得分:0)

$pattern = '/<\/li><li id="(.*?)" class="widget-container/';
$replace = '<a href="top">Top</a></li><li><li id="$1" class="widget-container/'
$output = preg_replace($pattern, $replace, $input);