我希望这是一个简单的正则表达式,但我想今天早上我的头脑没有搞砸了!
我正在使用一个页面的源代码并用一堆其他preg_replaces来整理它,所以当我们到达下面的正则表达式时,结果已经是一个单行字符串,其中删除了注释的内容,等
我现在要做的就是修剪>之间的文本。和< char删除额外的空格。即
<p> hello world </p>
应该成为
<p>hello world</p>
我认为这可以解决问题,但它似乎无能为力?
$data = trim(preg_replace('/>(\s*)([^\s]*?)(\s*)</', '>$2<', $data));
干杯。
答案 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);