移除多個空格的常見解決方案,讓多個空格變成一個空格是通過使用正則表達式如下:沒有正則表達式中PHP
preg_replace('/\s+/',' ',$str);
但是,正則表達式往往是緩慢的,因爲它具有裝載正則表達式引擎。有沒有非正則表達式的方法來做到這一點?
移除多個空格的常見解決方案,讓多個空格變成一個空格是通過使用正則表達式如下:沒有正則表達式中PHP
preg_replace('/\s+/',' ',$str);
但是,正則表達式往往是緩慢的,因爲它具有裝載正則表達式引擎。有沒有非正則表達式的方法來做到這一點?
嘗試
while(false !== strpos($string, ' ')) {
$string = str_replace(' ', ' ', $string);
}
代碼是不會處理的標籤。 – Bill 2012-02-24 15:00:28
@ Bill或任何其他類型的空白。 – 2016-02-20 13:17:44
那麼你可以使用PHP提供的trim或str_replace方法。
更新
function replaceWhitespace($str) {
$result = $str;
foreach (array(
" ", " \t", " \r", " \n",
"\t\t", "\t ", "\t\r", "\t\n",
"\r\r", "\r ", "\r\t", "\r\n",
"\n\n", "\n ", "\n\t", "\n\r",
) as $replacement) {
$result = str_replace($replacement, $replacement[0], $result);
}
return $str !== $result ? replaceWhitespace($result) : $result;
}
相比:
preg_replace('/(\s)\s+/', '$1', $str);
手工製作的函數運行大約15%的非常長(300KB +)串更快。
(我的機器至少上)
的正則表達式是不是慢....我懷疑你可以找到一個更快的方法,expecially如果白色空間差異(空格,換行符,標籤等)。 – Wrikken 2012-02-24 14:49:20
除正則表達式之外的任何東西都是黑客,因此可能會更慢。使用該語言附帶的工具可能是最好的主意。你說正則表達式往往很慢。你有基準嗎?除非你處理大量的數據,否則你可能不會注意到它。 – TecBrat 2012-02-24 14:53:02
你可以遍歷所有的字符,並刪除所有的空格後,你發現第一個,如果他們是順序,但我認爲這種方法比正則表達式慢... – 2012-02-24 14:56:29