php删除多余的空格
我试图从字符串中删除多余的空格,如下所示: 你好,世界 到 你好,世界 有人知道如何在PHP中实现这一点吗?使用regexp:php删除多余的空格,php,Php,我试图从字符串中删除多余的空格,如下所示: 你好,世界 到 你好,世界 有人知道如何在PHP中实现这一点吗?使用regexp: preg_replace('/( )+/', ' ', $string); 如果还要删除每个多个白色字符,可以使用\s(\s是白色字符) 您还可以使用+量词,因为它总是用替换它。然而,我发现{2,}更清楚地表明了您的意图。有一个关于如何去除文档中多余空白的示例不是PHP专家,但他的工作听起来像是正则表达式的工作 <?php $string = 'Hello
preg_replace('/( )+/', ' ', $string);
如果还要删除每个多个白色字符,可以使用\s(\s是白色字符)
您还可以使用
+
量词,因为它总是用
替换它。然而,我发现{2,}
更清楚地表明了您的意图。有一个关于如何去除文档中多余空白的示例不是PHP专家,但他的工作听起来像是正则表达式的工作
<?php
$string = 'Hello World and Everybody!';
$pattern = '/\s+/g';
$replacement = ' ';
echo preg_replace($pattern, $replacement, $string);
?>
同样,PHP不是我的语言,但我的想法是用单个空格替换多个空格。
\s
代表空格,+
表示一个或多个空格。末尾的g
表示全局执行(即不止一次)。示例中有\s\s+
。为什么?如果他们用星号而不是加号,我能理解。星号表示零次或多次出现。因此,您必须将正则表达式加倍。但是,加号表示一个或多个。有什么特别的原因吗?它应该仍然有效,但似乎没有必要。我认为原因是要使它只匹配2个或更多的空格——如果只有一个空格,就不需要进行替换。顺便说一句,这相当于alex的回答中的\s{2,}
。尝试了这个方法,但没有删除文本开头或结尾的空格。如果字符串是$str='Text with a low of spaces'
,它返回“包含大量空格的文本”
。我希望“文本中有很多空格”
@Mai这是因为代码没有删除空格,而是将它们折叠成一个空格。如果要修剪字符串,请使用trim()
。正则表达式中的括号不是必需的。
$str = 'Why do I
have so much white space?';
$str = preg_replace('/\s{2,}/', ' ', $str);
var_dump($str); // string(34) "Why do I have so much white space?"
<?php
$string = 'Hello World and Everybody!';
$pattern = '/\s+/g';
$replacement = ' ';
echo preg_replace($pattern, $replacement, $string);
?>