2011-06-14 54 views

回答

9

在正則表達式中使用加號+意味着一個或多個前一個字符的出現。因此,我們可以在preg_replace函數添加它的只是其中之一來替換一個或多個/發生

$url = "site.com/edition/new///"; 

$newUrl = preg_replace('/(\/+)/','/',$url); 

// now it should be replace with the correct single forward slash 
echo $newUrl 
+0

好主意 但如何做檢查「版本」 後,如本例 $ url =「site.com/edition///new///」; $ newUrl = preg_replace('/ edition(\/+)/','/',$ url); 如果url是'http://test.com/edition ///// new',我不知道如何應用 – Lelis 2011-06-14 05:51:34

+0

它不起作用! – 2017-08-04 11:22:57

0

編輯:哈我讀了這個問題作爲「沒有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///'); 
0

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,如果一切正常後測試...

有誰知道如何使用上述方法在查詢中保留雙斜槓?

(例如:?/測試//測試//測試=測試//測試> /測試/檢驗/測試=測試//測試)

15
$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 
+0

不錯的答案,你能解釋一下這個正則表達式的工作原理嗎? – Gihan 2015-12-15 06:05:27

+3

試試這個工具https://regex101.com – 2015-12-15 12:25:12

+0

在@ツLiverbool paste'([^:])(\/{2,})'作爲正則表達式的工具上,然後粘貼$ url作爲測試字符串或任何你想測試的其他網址 – briankip 2017-10-20 06:54:39

-1

簡單,檢查這個例子:

$url ="http://portal.lojav1.local//Settings////messages"; 
echo str_replace(':/','://', trim(preg_replace('/\/+/', '/', $url), '/')); 

輸出:

http://portal.lojav1.local/Settings/messages 
+0

這會殺死你的網址(http://變成http:/) – RMK 2017-03-24 10:40:32

+0

@RMK你對!我更新了。 – Offboard 2017-03-24 18:25:25