как удалить несколько косых черт в URI с помощью «PREG» или «HTACCESS»
site.com/edition/new/// -> site.com/edition/new/
site.com/edition///новый/ -> site.com/edition/новый/
Благодарность
как удалить несколько косых черт в URI с помощью «PREG» или «HTACCESS»
site.com/edition/new/// -> site.com/edition/new/
site.com/edition///новый/ -> site.com/edition/новый/
Благодарность
использование символа плюса +
в регулярном выражении означает появление одного или нескольких предыдущих символов. Таким образом, мы можем добавить его в 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://portal.lojav1.local//Settings////messages";
echo str_replace(':/','://', trim(preg_replace('/\/+/', '/', $url), '/'));
выход :
http://portal.lojav1.local/Settings/messages
([^:])(\/{2,})
в качестве регулярного выражения, затем вставьте $url в качестве тестовой строки или любого другого URL-адреса, который вы хотите протестировать.
- person briankip; 20.10.2017