【发布时间】:2018-12-28 16:55:08
【问题描述】:
去除所有 html 标签的正则表达式是什么?<br> 和 <p> 标签替换为单个空格并删除所有换行符?
例如:
<h1>Heading</h1>
<br>
<br />
<a href="#">hyperlink</a>
<p></p>
<p>paragraph1</p>
<p>paragraph2</p>
应该变成:
Heading hyperlink paragraph1 paragraph2
我尝试了以下方法:
$string = preg_replace( ["/<br\s*\/?>/i","/<\/p\s*>/i"]," ",$string);
$string = preg_replace(["/<\/?[^>]+>/", "/\r?\n|\r/"],"",$string);
这给了我:
Heading hyperlink paragraph1 paragraph2
任何关于单行或更优雅的解决方案的想法实际上有效?
【问题讨论】:
-
@Nahiyan 我想删除所有 html。以上只是一个例子。
-
您是否尝试过这样的操作:“preg_replace("/
|
|
|/g", " ", $string)"? -
这个怎么样? preg_replace("/]*[/]*>/g", " ", $string);
-
正则表达式不是处理这个问题的好方法。您应该使用 DomDocument 来遍历标签并获取它们的 innerHTML 值并添加空格等。
-
@adam78 这不是矫枉过正。这是解决方案。除非您完全控制要拥有的 HTML 类型,否则正则表达式不会给您正确的答案。
标签: php regex preg-replace