我希望这是一个简单的正则表达式,但我想我的头今天早上没有拧紧!
我正在获取一个页面的源代码,并用一堆其他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;