正则表达式修剪标签之间的文本

时间:2013-11-09 11:17:17

标签: php regex spaces

我希望这是一个简单的正则表达式,但我想今天早上我的头脑没有搞砸了!

我正在使用一个页面的源代码并用一堆其他preg_replaces来整理它,所以当我们到达下面的正则表达式时,结果已经是一个单行字符串,其中删除了注释的内容,等

我现在要做的就是修剪>之间的文本。和< char删除额外的空格。即

<p>    hello world   </p>

应该成为

<p>hello world</p>

我认为这可以解决问题,但它似乎无能为力?

$data = trim(preg_replace('/>(\s*)([^\s]*?)(\s*)</', '>$2<', $data));

干杯。

4 个答案:

答案 0 :(得分:0)

您可以使用此代码段。

$x = '<p>    hello world   </p>';
$foo = preg_replace('/>\s+/', '>', $x);  //first remove space after ">" symbol
$foo = htmlentities(preg_replace('/\s+</', '<', $foo)); //now remove space before "<" symbol
echo $foo;

答案 1 :(得分:0)

这是一个荒谬的方式来做到这一点大声笑:

$str = "<p>    hello world   </p>";
$strArr = explode(" ", $str);
$strArr = array_filter($strArr);
var_dump(implode(" ",$strArr));

使用数组的力量去除空格lol

答案 2 :(得分:-1)

正则表达式可能是:

>\s+(.*[^\s])\s+<

但不要使用它,有更好的方法来实现这一目标(例如:HTMLtidy)

答案 3 :(得分:-1)

你可以在regex中使用/ e修饰符来替换时使用trim()函数。

$data = preg_replace('/>([^<]*)</e', '">" . trim("$1") . "<"', $data);
相关问题