將字符串中非開頭位置的連續斜杠 `/` 替換為單個斜杠,保留開頭的 `//`。例如:
輸入: //foo//bar
輸出: //foo/bar
$re = "/(?
| 片段 | 含義 |
|---|---|
(? | 負向後顧斷言:當前位置不是字符串開頭(`^`) |
\/+/ | 匹配一個或多個斜杠(需轉義) |
組合含義:匹配非開頭位置的連續斜杠,替換為單個 `/`。
<?php
$str = "//foo//bar///baz////test";
// 方案一:負向後顧斷言(推薦,語義清晰)
$re1 = '/(?
實際項目中處理文件路徑/URL,建議使用成熟庫:
realpath(), preg_replace('#/{2,}#', '/', $path)(保留開頭雙斜杠需額外判斷)path.normalize() (Node.js), new URL() (Web)Paths.get(...).normalize()正則雖強,但處理結構化路徑時,專用 API 更可靠、可維護。