从string中删除多余的空格

我从数据库查询中收到一个string,然后在将其放入一个CSV文件之前删除所有HTML标记,回车符和换行符。 唯一的问题是,我无法find一种方法去除string之间多余空格。

什么是删除内部空白字符的最佳方法?

不确定你想要什么,但有两种情况:

  1. 如果你只是在string的开头或结尾处理多余的空格 ,你可以使用trim()ltrim()rtrim()来删除它。

  2. 如果你正在处理一个string中的多余空格,请考虑使用一个空白符 " "*的多个空格 " "*preg_replace " "

例:

 $foo = preg_replace('/\s+/', ' ', $foo); 
 $str = str_replace(' ','',$str); 

或者,用下划线replace,  等等

$str = trim(preg_replace('/\s+/',' ', $str));

上面的代码行将删除多余的空格,以及前导和尾随空格。

没有其他例子为我工作,所以我使用了这个:

 trim(preg_replace('/[\s\t\n\r\s]+/', ' ', $text_to_clean_up)) 

这将replace所有的标签,新行,双空格等简单的1空间。

如果只想replacestring中的多个空格,例如: "this string have lots of space . "而且你希望答案是"this string have lots of space" ,你可以使用下面的解决scheme:

 $strng = "this string have lots of space . "; $strng = trim(preg_replace('/\s+/',' ', $strng)); echo $strng; 

$str=preg_replace('/[\s]+/',' ',$str);

为了扩展Sandip的答案,我在日志中显示了一堆string,这些string在bit.ly中被错误地编码。 他们的意思只是编码的URL,但把一个叽叽喳喳句柄和一些其他的东西后一个空格。 看起来像这样

 ? productID =26%20via%20@LFS 

通常情况下,这不会是一个问题,但我得到了很多的SQL注入尝试,所以我redirect任何不是一个有效的ID到404。我使用preg_replace方法,使无效productIDstring变成有效的productID。

 $productID=preg_replace('/[\s]+.*/','',$productID); 

我在URL中查找空格,然后删除所有内容。