php删除空段

时间:2015-09-19 16:58:52

标签: php json preg-replace str-replace

我试图从字符串中删除空段落。 是的,我知道这听起来很简单,但它只是不起作用。我尝试了很多我在论坛上阅读的解决方案,但它们都不会起作用。 我应该补充说,我从一个从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);

尝试上述两种解决方案,输出正好是原始字符串。 任何帮助都将受到高度赞赏,因为我现在在论坛上搜索了半天... 提前谢谢!

编辑: 它必须使用我从数组中获取的字符串格式。为了测试我只是将输出复制/粘贴到下面,这里它的工作非常好!

$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>

1 个答案:

答案 0 :(得分:2)

好吧,经过一些关于UTF-8,Unicode和许多其他内容的阅读后,我找到了一个有效的解决方案(实际上在论坛上)。

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

很好,很容易。但由于\x2a\xa0只是nbsp;,我仍然不知道为什么没有工作:<p>&nbsp;</p> ......