preg_replace删除html标记问题

时间:2012-07-20 12:01:40

标签: php preg-replace

我正在做的事情是一个非常愚蠢的错误,实际上在我的HTML中,我有很多

<li class="MsoNormal" style="margin:0in 0in 0pt">
            <span style="font-family:'Calibri','sans-serif';font-size:11pt">May be required to work extra hours at month end to meet monthly deadlines. .</span>
 </li>

我想替换所有标签,如LI,span with - 所以输出将是

“ - 可能需要在月末额外工作以满足每月截止日期。”

我正在使用此代码

$a = preg_replace('/(<li[^>]*><span[^>]*>)(.*?)(<\/span><\/li>)/imsU',"-$2",$a);

但它不起作用。请建议。

提前致谢

2 个答案:

答案 0 :(得分:1)

你试过strip_tags()吗?这是一个简单的方法来做你想要的我认为......

答案 1 :(得分:0)

您的正则表达式中没有换行符。尤其是标签之间。正确的正则表达式将是:

$a = preg_replace('/(<li[^>]*>(?:[\s]*)<span[^>]*>)(.*?)(<\/span>(?:[\s]*)<\/li>)/imsU', "-$2", $a);

?:让第二场比赛仍然排在第二位。 (这称为非捕获分组)