使用preg_replace删除字符串末尾的额外空格

4
我想使用 PHP 中的 preg_replace 将字符串末尾的额外空格替换为空。我正在创建一个单词数据库,但是某些单词的末尾多了一些空格。
3个回答

11
你应该使用rtrim函数,因为它可以删除字符串末尾的额外空格,并且比使用preg_replace更快。
$str = "This is a string.    ";
echo rtrim($str);

速度比较 - preg_replace vs. 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);

结果

preg_replace: 0.000036
rtrim: 0.000004

如您所见,rtrim 的速度实际上要快 九倍


3

为什么我没想到那个。谢谢你们俩。 - daron
@Matthew 其实那是错误的。trim 常常比 preg_replace 更快。作为一个基本准则,你应该优先使用内置的 PHP 函数,而不是转向正则表达式。 - Michael Irigoyen
@MichaelIrigoyen 对不起,我的错。由于某种原因,我把它们搞反了!http://maettig.com/code/php/php-performance-benchmarks.php - Matthew

0

使用 preg_replace 就像你想要的一样:

$s = ' okoki efef ef ef   
';

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

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

print('-'.$s.'-');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接