4

I want to replace the extra space at the end of the string with nothing using preg_replace in PHP. I was creating a big database of words and somehow a few words got extra white space at the end.

Michael Irigoyen
  • 22,513
  • 17
  • 89
  • 131
daron
  • 41
  • 1
  • 3

3 Answers3

11

You should use rtrim instead. It will remove extra white space at the end of a string and is faster than using preg_replace.

$str = "This is a string.    ";
echo rtrim($str);

Speed Comparison - preg_replace v. trim

// Our string
$test = 'TestString    ';

// Test preg_replace
$startpreg = microtime(true);
$preg = preg_replace("/^\s+|\s+$/", "", $test);
$endpreg = microtime(true);

// Test trim
$starttrim = microtime(true);
$trim = rtrim($test);
$endtrim = microtime(true);

// Calculate times
$pregtime = $endpreg - $startpreg;
$trimtime = $endtrim - $starttrim;

// Display results
printf("preg_replace: %f<br/>", $pregtime);
printf("rtrim: %f<br/>", $trimtime);

Results

preg_replace: 0.000036
rtrim: 0.000004

As you can see, rtrim is actually nine times faster.

Michael Irigoyen
  • 22,513
  • 17
  • 89
  • 131
3

why not just use trim() http://php.net/manual/en/function.trim.php

KJYe.Name
  • 16,969
  • 5
  • 48
  • 63
  • why didnt i think about that. Thank you both – daron Jan 24 '11 at 21:51
  • @Matthew Actually, that's incorrect. `trim` tends to be faster than `preg_replace`. As a general rule of thumb, you should use the built-in PHP functions before turning to RegEx. – Michael Irigoyen Mar 10 '15 at 12:10
  • @MichaelIrigoyen yes sorry my bad I got them the wrong way round for some reason! http://maettig.com/code/php/php-performance-benchmarks.php – Matthew Mar 30 '15 at 13:24
0

with preg_replace as you wanted :

$s = ' okoki efef ef ef   
';

print('-'.$s.'-<br/>');

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

print('-'.$s.'-');
Mathias E.
  • 471
  • 3
  • 5