PHP 移除最後一個「/」路徑後面的文字

PHP 遇到要處理 URL path 的問題,例如下述:

  • $path = '/images/theme/firefox/logo.png'; → 想要變成 /images/theme/firefox
  • $path = '/images/theme/firefox'; → 想要變成 /images/theme

這本身是很簡單的問題,但是花了點時間處理,純粹紀錄一下沒睡飽的犯蠢過程

很多事情想一想、睡飽再做,可以省掉不少時間~

PHP 移除最後一個「/」路徑後面的文字

因為剛開始就是從文字檔在 Parse access.log 開始,所以處理資料的想法就很容易朝 URL 等等方式來走,就會朝 parse_url() 等等的 Function 來著想,沒有相關 Function 可以用,就很常自己做下去了~

一開始使用 preg_match、preg_replace 等等來做,因為是要 Parse log 的資料,所以也會希望比對速度能快一點,所以使用 substr + strpos 等等來做,範例如下:

<?php
$path = '/images/theme/firefox/logo.png';
echo substr($path, 0, strrpos($path, '/')) . PHP_EOL; // /images/theme/firefox
?>

前一天做完覺得還不賴,但是睡一覺起來,在看看這些文字... 就是資料夾,而且是往上一層的意思...

所以直接拿 dirname 來用,根本不用自己自己寫... XD

<?php
$path = '/images/theme/firefox/logo.png';
echo dirname($path) . PHP_EOL; // /images/theme/firefox
?>

有時後跳脫當下環境,純粹就看資料、看文字來處理,可以想到更簡單又快速的解法~ 🙂

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料