我从 Laravel 的文本框中获取以下 HTML:
<p>Just a test</p>
<p> </p>
<p>Just a test</p>
<p> </p>
<p>Just a test</p>
基本上我想做的就是删除所有
还有所有<p> </p>
,我知道使用正则表达式来过滤 HTML 是一个坏主意,但就我而言,场景仅限于我上面提到的 2 个选项。
所以我有以下 PHP 代码:
$replaceNbsp = array(' ' , ' ' , '<p> </p>' );
$blog_content = str_replace($replaceNbsp , ' ' , $request->blog_content);
return $blog_content;
但现在不再删除 <p> </p>
完全,我得到以下输出。
<p>Just a test</p>
<p> ;</p>
<p>Just a test</p>
<p> ;</p>
<p>Just a test</p>
我如何替换描述中的 HTML ??
最佳答案
在这种情况下,正则表达式没有任何问题:
$blog_content = preg_replace( '/<p>( )?<\/p>/g', '', $request->blog_content );
为了坚持原来的策略,您需要颠倒数组中的顺序,从最具体到最不具体:
$replaceNbsp = array( '<p> </p>', ' ' , ' ' );
$blog_content = str_replace($replaceNbsp , ' ' , $request->blog_content);
这样,它就会替换 <p>
中包含的版本首先标记,然后是
没有<p>
标签等
关于php - 如何替换整个字符串,包括 html 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41576532/