删除多余的“>”在PHP中的字符串

时间:2013-10-07 09:14:31

标签: php regex

在我的代码中,我得到一个包含html标签的字符串,如下所示:

$string = '<div style="width:100px;">ABC 1234 <span> Test string, testing this string</span></div>';

现在,我使用preg_replace:

从所述字符串中删除了style属性
$string = preg_replace('/(<[^>]+) style=".*?"/i', '', $string);

删除样式标记后,我设法删除了样式属性,因此div标记最终看起来像<div>。我在执行此操作后遇到的问题是,我现在在span的结束标记之后得到多余的>,因此字符串现在看起来像这样:

$string = '<div>ABC 1234 <span> Test string, testing this string</span>   >     </div>';

我的问题是,为什么我突然获得了成功>?是否有一个不同的正则表达式,我可以使用它来摆脱样式属性而不会出现额外的>?或者我有什么方法可以驾驭这个?

我尝试过两次使用str_replace:

$string = str_replace("\n", "", $string);
$string = str_replace(">>", ">", $string);

但这也不起作用。

我不是要删除HTML标记,只是删除样式部分。

2 个答案:

答案 0 :(得分:0)

我用过这个

$string = '<div style="width:100px;">ABC 1234 <span> Test string, testing this string</span></div>';
$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $string);
die(htmlentities($output))

,输出

<div>ABC 1234 <span> Test string, testing this string</span></div>

根据需要

答案 1 :(得分:0)

仅用于此字符串。

<?php
$string = "<div style=\"width:100px;\">ABC 1234 <span> Test string, testing this string</span></div>";

$string = strip_tags($string,"<span>");

$string = "<div>".$string."</div>";
?>

现在字符串是:

<div>ABC 1234 <span> Test string, testing this string</span></div>