php 删除空段落

php remove empty paragraphs

我正在尝试从字符串中删除空段落。 是的,我知道这听起来很容易,但就是行不通。我已经尝试了很多我在论坛上阅读的解决方案,但它们都不起作用。 我应该补充一点,我从 json 文件创建的数组中获取要转换的字符串。 这是我的代码:

if ($json_file = json_decode(file_get_contents("export.json"), true)) {
    $str = $json_file[12]["the_string"];
}
echo $str;

当我查看页面的源代码时,我看到:

<p> </p>
<p> </p>
<p> </p>
<p>Some text, Some text</p>

现在我只想去掉空段落。 我试过这个:

echo preg_replace("/<p[^>]*>[\s|&nbsp;]*<\/p>/", '', $str);

...但它不起作用。这个更简单的解决方案也没有:

echo str_replace("<p> </p>","",$str);

尝试以上两种方案,输出的都是原来的字符串。 任何帮助将不胜感激,因为我现在已经在论坛中搜索了半天...... 提前致谢!

编辑: 它必须对我从数组中获取的字符串格式进行处理。为了测试,我只是 copy/pasted 将输出输出到下面,在这里它工作得很好!

$str2 = "
<p> </p>
<p> </p>
<p>&nbsp;</p>
<p>Some text, Some text</p>";

echo preg_replace("/<p[^>]*>[\s|&nbsp;]*<\/p>/", '', $str2);

EDIT2:这是 json 文件中正在访问的实际内容:

<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>This is some text<\/p>

嗯,在阅读了一些有关 UTF-8、Unicode 和许多其他内容的内容之后,我找到了一个可行的解决方案(实际上在论坛上)。

echo str_replace("<p>\xc2\xa0</p>","",$str);

很好很简单。但是由于 \x2a\xa0 只是一个 nbsp; 我仍然不明白为什么这个 没有 工作:<p>&nbsp;</p>...