如何移除多個斜線在URI與「PREG」或「htaccess的」如何刪除多個斜線在URI與「PREG」或「htaccess的」
site.com/edition/new/// - >位點.COM /編輯/新/
site.com/edition///new/ - > site.com/edition/new/
感謝
如何移除多個斜線在URI與「PREG」或「htaccess的」如何刪除多個斜線在URI與「PREG」或「htaccess的」
site.com/edition/new/// - >位點.COM /編輯/新/
site.com/edition///new/ - > site.com/edition/new/
感謝
在正則表達式中使用加號+
意味着一個或多個前一個字符的出現。因此,我們可以在preg_replace函數添加它的只是其中之一來替換一個或多個/
發生
$url = "site.com/edition/new///";
$newUrl = preg_replace('/(\/+)/','/',$url);
// now it should be replace with the correct single forward slash
echo $newUrl
編輯:哈我讀了這個問題作爲「沒有preg」哦:3
function removeabunchofslashes($url){
$explode = explode('://',$url);
while(strpos($explode[1],'//'))
$explode[1] = str_replace('//','/',$explode[1]);
return implode('://',$explode);
}
echo removeabunchofslashes('http://www.site.com/edition////new///');
http://domain.com/test/test/>http://domain.com/test/test
# Strip trailing slash(es) from uri
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)[/]+$ $1 [NC,R,L]
http://domain.com//test//test//>http://domain.com/test/test/
# Merge multiple slashes in uri
RewriteCond %{THE_REQUEST} ^[A-Z]+\ //*(.+)//+(.*)\ HTTP
RewriteRule^/%1/%2 [R,L]
RewriteCond %{THE_REQUEST} ^[A-Z]+\ //+(.*)\ HTTP
RewriteRule^/%1 [R,L]
變化R到R = 301,如果一切正常後測試...
有誰知道如何使用上述方法在查詢中保留雙斜槓?
(例如:?/測試//測試//測試=測試//測試> /測試/檢驗/測試=測試//測試)
$url = 'http://www.abc.com/def/git//ss';
$url = preg_replace('/([^:])(\/{2,})/', '$1/', $url);
// output http://www.abc.com/def/git/ss
$url = 'https://www.abc.com/def/git//ss';
$url = preg_replace('/([^:])(\/{2,})/', '$1/', $url);
// output https://www.abc.com/def/git/ss
好主意 但如何做檢查「版本」 後,如本例 $ url =「site.com/edition///new///」; $ newUrl = preg_replace('/ edition(\/+)/','/',$ url); 如果url是'http://test.com/edition ///// new',我不知道如何應用 – Lelis 2011-06-14 05:51:34
它不起作用! – 2017-08-04 11:22:57