cómo quitar varias barras de URI con 'PREG' o 'HTACCESS'cómo eliminar múltiples barras de URI con 'PREG' o 'HTACCESS'
site.com/edition/new/// -> sitio .com/edición/nueva/
site.com/edition///new/ -> site.com/edition/new/
gracias
cómo quitar varias barras de URI con 'PREG' o 'HTACCESS'cómo eliminar múltiples barras de URI con 'PREG' o 'HTACCESS'
site.com/edition/new/// -> sitio .com/edición/nueva/
site.com/edition///new/ -> site.com/edition/new/
gracias
utilizando el signo más +
en expresiones regulares significa la aparición de uno o más del carácter anterior. Así podemos añadir que en un preg_replace para reemplazar la ocurrencia de uno o más /
por sólo uno de ellos
$url = "site.com/edition/new///";
$newUrl = preg_replace('/(\/+)/','/',$url);
// now it should be replace with the correct single forward slash
echo $newUrl
Editar: Ha leí esta pregunta como "sin preg" oh bien: 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]
Cambio R a R = 301 si todo funciona bien después de la prueba ...
¿Alguien sabe cómo preservar las barras diagonales dobles en la consulta utilizando el método anterior?
(Por ejemplo:? /? // prueba prueba prueba // = // test de prueba>/test/prueba/test = prueba // test)
$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
Buena respuesta, ¿podría explicar cómo funciona esta expresión regular? – Gihan
Pruebe esta herramienta https://regex101.com –
En la herramienta vinculada por @ ツ Liverbool paste '([^:]) (\/{2,})' como la expresión regular, luego pegue $ url como cadena de prueba o cualquier otra url que quiere probar – briankip
simple, comprobar este ejemplo:
$url ="http://portal.lojav1.local//Settings////messages";
echo str_replace(':/','://', trim(preg_replace('/\/+/', '/', $url), '/'));
de salida:
http://portal.lojav1.local/Settings/messages
Gran idea pero ¿cómo puedo hacer la comprobación después de 'edición' Como este ejemplo $ url = "site.com/edition///new///"; $ newUrl = preg_replace ('/ edition (\/+) /', '/', $ url); No sé aplicar – Lelis
si url era 'http: //test.com/edition ///// new' ¡no funcionará! –