X

PHP trim() 過濾掉重複的字元

想要過濾掉換行等字元, 最常用的就是 trim(), trim() 預設會過濾掉於 "此字串前後" 的 下述字元:

  • " " (ASCII 32 (0x20)), an ordinary space. (空白)
  • "\t" (ASCII 9 (0x09)), a tab.
  • "\n" (ASCII 10 (0x0A)), a new line (line feed). (換行)
  • "\r" (ASCII 13 (0x0D)), a carriage return.
  • "\0" (ASCII 0 (0x00)), the NUL-byte.
  • "\x0B" (ASCII 11 (0x0B)), a vertical tab.

PHP trim() 濾掉重複的字元

除了過濾換行、空白.. 等字元外, 還可以指定要過濾的字元, 指定範圍等~ 例如:

  • trim($foo, '.com');
  • trim($binary, "\x00..\x1F");

使用 rtrim() 遇到的問題

使用 rtrim() 遇到下述問題, 這個是使用上沒看清楚 rtrim() 的說明, 以為 rtrim() 會是過濾掉最後面的字串, 實際上 trim() 做的比預想中的還多~

註1: rtrim() 類同 trim(), 差異在 rtrim() 只有過濾字串最後面的文字.

註2: 下述範例是想把字串最後面的 ".com" 過濾掉, 前二行是遇到的問題, 最下面兩行是把過濾 .com 的拆成兩個步驟來解決.

<?php
$domain = 'abc.com';
echo rtrim($domain, '.com'); // ab

$domain = 'abc.com';
$tmp = rtrim($domain, 'com');  // $tmp = abc. 
echo rtrim($tmp, '.'); // abc
?>

使用 trim() 注意事項

但是 trim() 使用上, 要注意的事情是: php trim 會把 指定的字串, 分割成一個一個字元, 分別過濾掉, 而不是過濾掉 "指定字串".

ex: php trim 會把 .com 變成一個一個字元('.', 'c', 'o', 'm'), 分別過濾掉, 而不是過濾掉 ".com".

所以使用 trim() 要注意下述的事情:

<?php
echo trim('ccmocm.abc.cccmocm', 'com'); // .abc.
echo trim('abc', 'bad'); // c (ab 被濾掉了, 沒有 full match 也會過濾掉)
?>
Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post