我正在尝试破解我正在开发的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的情况下使用它来更改代码?
干杯!
答案 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);