PHP:如何使用正则表达式只替换一行?

时间:2013-05-06 07:28:18

标签: php regex

我有这个字符串:

<li id="1">3431233</li>
<li id="2">fsdfdsfsdfdsfdsf</li>
<li id="3">abc</li>
<li id="4"> fdsf2342343</li>
<li id="5">123</li>

我想只替换那些包含abc或123的行(在这种情况下为第3和第5行)。我的问题是这个正则表达式不起作用:

^<li>abc<\/li>

它取代了所有的lis。我怎样才能将替换限制在某一行?李不同的线和线,这是动态的,我不知道它们将如何看(他们可能有什么类和ID。)

谢谢!

3 个答案:

答案 0 :(得分:3)

尝试

^<li>(abc|123|)<\/li>

我测试了它here并且它有效

答案 1 :(得分:2)

只需使用str_replace

即可
<?php
  str_replace("<li>abc</li>"," ", $yourstring);
  str_replace("<li>123</li>"," ", $yourstring);

编辑:试试这个:

    '/<li(.*)>(abc|123)<\/li>/';

答案 2 :(得分:2)

尝试here

^<li id="[0-9]">(abc|123|)<\/li>

如果ID增长,请使用[0-9]+

^<li id="[0-9]+">(abc|123|)<\/li>