在我的代码中,我得到一个包含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标记,只是删除样式部分。
答案 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>