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.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
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.
回答2:
why not just use trim() http://php.net/manual/en/function.trim.php
回答3:
with preg_replace as you wanted :
$s = ' okoki efef ef ef
';
print('-'.$s.'-<br/>');
$s = preg_replace('/\s+$/m', '', $s);
print('-'.$s.'-');