将<span text-decoration:underline =“”替换为=“”<u =“”>

时间:2015-12-22 06:42:24

标签: php regex preg-replace

我正在格式化某个HTML文本。

在该文中,我有几个具有各种属性的<span>标签。 我想改变所有

<span style="text-decoration: underline; color: #993300;">XXXXXXX</span> 

<span style="color:#993300"><u>XXXXXXXX</span>

我用过

$cont = preg_replace("/<span style=\"text-decoration:\s(.+?)>(.+?)<\/span>/is", "<u>$2</u>", $cont);

实现这一目标。但问题是,如果我有多个</span>标记,那么该脚本将替换<span style="...和最后</span>之间的所有内容

请帮忙。

2 个答案:

答案 0 :(得分:1)

试试这个

preg_replace("/(<span\s*style\s*=\s*\"[^\"]*?)text-decoration\s*:\s*underline\s*;([^\"]*\"\s*>)((.(?!<\/span>))+)<\/span>/is", "$1$2<u>$3</u><\/span>")

想法是匹配每个角色,直到</span>

(.(?!<\/span>))+

答案 1 :(得分:0)

您可以使用JQuery

解决此问题
<script type="text/javascript">
  $(document).ready(function () {
    $('span').css('color', '#993300');
    $('span').css('text-decoration', 'none');
});
</script>

如果您是JQuery的新用户,而不是jQuery中的<head>库,请参阅此示例:

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>

现在您可以使用上面的代码,它会起作用。