摆脱php或mysql中的多个空格

I have a form which takes user inputs; Recently, I have come across many user inputs with multiple white spaces. Eg. "My                  tests               are working            fine!" Is there any way I can get rid of these white spaces at PHP level or MySQL level?

  1. Clearly trim doesn't work here.
  2. I was thinking of using Recursive function but not sure if there's an easy and fast way of doing this.

my code so far is as below:

function noWhiteSpaces($string) {
   if (!empty($string)) {
      $string = trim($string);
      $new_str = str_replace('  ', ' ', $string);
   } else {
      return false;
   }
   return $new_str;
}

echo noWhiteSpaces("My        tests     are working fine here       !");

If the input is actual whitespaces and you want to replace them with a single space, you could use a regular expression.

$stripped = preg_replace('/\s+/', ' ', $input);

\s means 'whitespace' character. + means one or more. So, this replaces every instance of one or more whitespace characters' in $input with a single space. See the preg_replace() docs, and a nice tutorial on regexes.


If you're not looking to replace real whitespace but rather stuff like  , you could do the same, but not with \s. Use this instead:

$stripped = preg_replace('/( )+/', ' ', $input);

Note how the brackets enclose  .