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.
Asked
Active
Viewed 9,379 times
4

Michael Irigoyen
- 22,513
- 17
- 89
- 131

daron
- 41
- 1
- 3
3 Answers
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