首页 > 解决方案 > 通过 php 中的 preg_replace 删除顶部和底部的多行 html 代码,而不是两个字符串 'hello' 的中间

问题描述

$data = '<p>&nbsp;</p>
<p>&nbsp;</p> 
<p>hello</p> 
<ul>
 <li>&nbsp;</li>
 <li>&nbsp;</li>
</ul> 
<p>hello</p>
<p>&nbsp;</p>
<p>&nbsp;</p>';

$regex = preg_replace('/^((<[a-z]+>)(&nbsp;)(<\/[a-z]+>))/','',$data);
$regex = preg_replace('/((<[a-z]+>)(&nbsp;)(<\/[a-z]+>))$/','',$regex);
echo $regex;

我只能删除顶部和底部的单行代码,而下一行我无法删除。即使我也尝试过这段代码

$regex = preg_replace('/^((<[a-z]+>)(&nbsp;)(<\/[a-z]+>))*/','',$data);
$regex = preg_replace('/((<[a-z]+>)(&nbsp;)(<\/[a-z]+>))*$/','',$regex);
echo $regex;

我的确切输出想要是这样的

<p>hello</p>
<ul>
<li>&nbsp;</li>
<li>&nbsp;</li>
</ul>
<p>hello</p>

标签: phpregexpreg-replacepreg-matchregexp-replace

解决方案


使用 str_replace ,希望它的工作

$regex = str_replace("<p>&nbsp;</p>",'',$data);

推荐阅读