删除两个&#39; <p> </p>&#39;之间的空格。

时间:2014-08-19 15:41:29

标签: php str-replace

我正在尝试将双倍生成的</p>替换为:

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

但是我的PHP在第一个</p>和第二个</p>

之间产生了很多空格

如何删除</p>代码之间的所有空格?

我的字符串看起来像这样:

<blockquote>
  <p>Text</p> <!-- here's unknown amount of space generated by php --> </p>
</blockquote>

这与WordPress Stackexchange上的this问题有关。

1 个答案:

答案 0 :(得分:1)

使用preg_replace(),您可以使用以下正则表达式进行此替换:

/<\/p>\s+<\/p>/

您的代码看起来像这样:

$pat = '/<\/p>\s+<\/p>/';
$replacement = '<\p>';
$excerpt = preg_replace( $pat, $replacement, $excerpt );

让我们打破这个正则表达式:

  1. <\/p> - 匹配结束<\p>元素(请注意斜线的转义)
  2. \s+ - 匹配一个或多个空白字符
  3. <\/p> - 匹配结束<\p>元素(请注意斜线的转义)
  4. 通常,您需要在正则表达式中添加全局修饰符g,以便在匹配模式的每次出现时进行替换,但preg_replace函数默认情况下将执行全局替换。 / p>

    以下是您可以测试和使用的示例 - http://regex101.com/r/dA3kU0/2