我想在xml文件中使用php删除一些空的<p>标签</p>

时间:2014-03-25 09:48:02

标签: php

我想在创建xml文件时替换一些空的p标记。

                    <p> <br> </p> 
                      <p> </p>

我使用了str_replace。这不起作用我们必须动态删除那个。也许我们可以使用preg_replaceenter image description here 你能不能把preg_replace表达给我写一下......

谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:使用此正则表达式删除空段落

尝试

$data = // your html data
$pattern = "/<p[^>]*><\\/p[^>]*>/"; 
$data = preg_replace($pattern, '', $data); 

要替换所有空标记:

$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/";

答案 1 :(得分:0)

首先,您应该考虑不将空<p>放在XML文件中。

但是,如果无法做到这一点,您可以使用可选的空格和<p></p>标记替换<br>标记,如下所示:

$data  = '[...]'
$attr  = '(?:\s+[\w\d\-]+\s*=\s*(["\'])(?:\\\\1|[^\\1])+\\1)*\s*';
$regex = "~<p{$attr}>(?:\s+|<br\s*/?>)*</p>~i";

// Replace empty paragraphs with optional
// whitespace and <br> inside it
$data  = preg_replace($regex, '', $data);

修改

如果您只想删除包含空格的段落,则:

$data = 'asd <p> </p> asd';
$data = str_replace('<p> </p>', '', $data);

答案 2 :(得分:0)

试试这个:

$data = preg_replace("/<p[^>]*>\s*<\/p[^>]*>/i", "", $data);