第一行和第二行的目標是消除重複的連續的斜槓,並確保以斜線串面漆:
rtrim($baseURI, '/') # remove leading slashes
&/+& # looks for one or more slashes anywhere in the string
# to replace them by an unique slash
然後替換結果右側concatened用/
。
可以更換這些線路由:
$baseURI = preg_replace('~/+|[^/]\K$~', '/', $baseURI);
$requestURI = preg_replace('~/+|[^/]\K$~', '/', $_SERVER['REQUEST_URI']);
(其中\K
刪除比賽從比賽結果的開始)
最後一行中刪除從第一個問號的所有內容(包括)字符串的結尾:
\? # literal ?
.*? # all character zero or more time with a lazy quantifier (that is totally useless)
$ # end of the string
您可以替換這行:
$requestURI = preg_replace('~\?.*$~', '', $requestURI);
或
$arr = explode('?', $requestURI);
$requestURI = $arr[0];
重要提示:如果我沒有理解這一切的好目標,第三行必須在第二個之前從放置,因爲它會刪除所有(包括斜槓)問號。更好的選擇是通過更換這些最後兩行:
$requestURI = preg_replace('~/+|(?:\?.*|[^/]\K)$~', '/', $_SERVER['REQUEST_URI']);
注2:這裏使用正則表達式模式是非常基本的。看看simple tutorial或making some tests不是一個壞主意。
+1使'\ K'亮。 –
謝謝:)我仍然很難完全理解所有的正則表達式,但我想我可以弄明白。 – user3013222