正则表达式用于修剪HTML标记中包含的字符串的空格

时间:2014-05-19 08:09:56

标签: php html regex parsing

我的HTML字符串(已验证):

<div><img src="images/stories/2014/AAA.gif" alt="AAA" width="24" height="24" /> THE PRODUCTION OF: PLASTIC BOTTLES   <br /></div>

我提取<img>标记附近的唯一标题,修剪前后所有空格,而不是将其包裹在<h1>标记中。 结果应该是:

<div><h1>THE PRODUCTION OF: PLASTIC BOTTLES</h1></div>

我已经完成了一个有效的正则表达式,但也包含了最终结果中的空格:

/<img\s*src="[^"]+"\s*alt="AAA"\s*width="24"\s*height="24"\s*\/>\s*([^<]+)\s*<br\s*\/>/

图像可识别 alt 宽度高度属性的这些特征值。 感谢。

3 个答案:

答案 0 :(得分:1)

实际上,在没有正则表达式的情况下,有一个简单的方法可以做到这一点。

'<div><h1>' . trim(strip_tags($original_html)) . '</h1></div>';

首先删除所有标签,然后修剪空白,最后将其包装在您需要的任何标签中。

答案 1 :(得分:1)

让你的比赛非贪婪应该可以做到:<img\s*src="[^"]+"\s*alt="AAA"\s*width="24"\s*height="24"\s*\/>\s*([^<]+?)\s*<br\s*\/>(注意?旁边的额外[^<]+。更多信息here

话虽这么说,你应该使用像PHP DOM Parser之类的东西来处理HTML。

答案 2 :(得分:1)

我认为更好的解决方案是使用jQuery。特别是方法.text()

<div id='mydiv'><img src="images/stories/2014/AAA.gif" alt="AAA" width="24" height="24" /> THE PRODUCTION OF: PLASTIC BOTTLES   <br /></div>`
 <script>var text = $('#mydiv').text();$('#mydiv').html('<h1>' + text + '</h1>');</script>

结果是:

 <div><h1>THE PRODUCTION OF: PLASTIC BOTTLES</h1></div>