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



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

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

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

<p>    hello world   </p>

应该成为

<p>hello world</p>

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

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

干杯。

这是一个荒谬的方法,哈哈:

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

使用数组的强大功能来消除空格,哈哈

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

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

则表达式可以是:

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

但不使用它,有更好的方法来达到这个目标(例如:HTMLtidy)

您可以使用此代码片段。

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

最新更新