1

我原以为这是一个简单的正则表达式,但我想今天早上我的脑袋没有搞砸!

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

我现在要做的就是修剪 > 和 < 字符之间的文本以删除多余的空格。IE

<p>    hello world   </p>

应该成为

<p>hello world</p>

我认为这可以解决问题,但它似乎什么也没做?

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

干杯。

4

4 回答 4

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;
于 2013-11-09T12:05:40.040 回答
0

这是一种荒谬的做法,哈哈:

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

使用数组的力量来删除空格大声笑

于 2018-03-28T20:32:20.420 回答
-1

正则表达式可以是:

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

但不要使用它,有更好的方法可以实现该目标(例如:HTMLtidy)

于 2013-11-09T11:28:48.033 回答
-1

您可以在正则表达式中使用 /e 修饰符在替换时使用 trim() 函数。

$data = preg_replace('/>([^<]*)</e', '">" . trim("$1") . "<"', $data);
于 2013-11-09T11:50:35.493 回答