1

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

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

现在,我使用 preg_replace 从所述字符串中删除了样式属性:

$string = preg_replace('/(<[^>]+) style=".*?"/i', '', $string);

删除 style 标签后,我设法删除了 style 属性,因此 div 标签最终看起来像<div>. 这样做后我遇到的问题是,我现在>在跨度的结束标记之后得到了一个多余的部分,所以字符串现在看起来像这样:

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

我的问题是,为什么我突然得到一个超额>?我可以使用不同的正则表达式来摆脱 style 属性而不额外>出现吗?或者有什么办法可以让我摆脱这个吗?

我尝试使用 str_replace 两次,如下所示:

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

但这也不起作用。

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

4

2 回答 2

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>

如你所愿

于 2013-10-07T09:21:28.377 回答
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>
于 2013-10-07T09:25:05.763 回答