【发布时间】:2011-01-24 21:12:00
【问题描述】:
我想在 PHP 中使用 preg_replace 将字符串末尾的多余空格替换为空。我正在创建一个大的单词数据库,不知何故,最后有几个单词得到了额外的空白。
【问题讨论】:
标签: php preg-replace
我想在 PHP 中使用 preg_replace 将字符串末尾的多余空格替换为空。我正在创建一个大的单词数据库,不知何故,最后有几个单词得到了额外的空白。
【问题讨论】:
标签: php preg-replace
您应该改用rtrim。它将删除字符串末尾的多余空格,并且比使用 preg_replace 更快。
$str = "This is a string. ";
echo rtrim($str);
速度比较 - preg_replace 与 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 实际上比nine times 更快。
【讨论】:
为什么不直接使用 trim() http://php.net/manual/en/function.trim.php
【讨论】:
trim 往往比 preg_replace 快。作为一般经验法则,您应该在使用 RegEx 之前使用内置的 PHP 函数。
根据需要使用 preg_replace :
$s = ' okoki efef ef ef
';
print('-'.$s.'-<br/>');
$s = preg_replace('/\s+$/m', '', $s);
print('-'.$s.'-');
【讨论】: