我的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 ,宽度和高度属性的这些特征值。 感谢。
答案 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>