khushbu
¿Cómo reemplazar espacios y guiones cuando aparecen juntos con solo guiones en PHP?
por ejemplo, debajo está mi URL
http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes
En esto, quiero reemplazar todos los caracteres especiales con guión en PHP. En la URL ya hay un guión después de “balcón”. Si reemplazo el guión con un carácter especial, se convierte en dos guiones porque ya hay un guión en la URL y solo quiero 1 guión.
Tu sentido común
Yo diría que usted puede quererlo de otra manera. No “espacios”, sino todos los caracteres no alfanuméricos. Porque puede haber otros caracteres no permitidos en la URL (+ signo, por ejemplo, que se usa como reemplazo de espacio)
Entonces, para hacer una URL válida a partir de un texto de formato libre
$url = preg_replace("![^a-z0-9]+!i", "-", $url);
-
¿No deberían ser barras diagonales, en lugar de signos de exclamación?
–Eric
23 de julio de 2010 a las 13:28
-
Primero debe cortar el nombre de dominio, de lo contrario perderá sus puntos.
–Eric
23 de julio de 2010 a las 13:31
coadicto
Si pudiera haber un máximo de un espacio alrededor del guión, puede usar la respuesta de John. Si pudiera haber más de un espacio, puede intentar usar preg_replace:
$str = preg_replace('/\s*-\s*/','-',$str);
Esto reemplazaría incluso a un -
no rodeado de ningún espacio con -
!!
Para hacerlo un poco más eficiente, podrías hacer:
$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);
Ahora bien, esto aseguraría una -
tiene al menos un espacio a su alrededor mientras se reemplaza.
Tali Luvhengo
Esto debería hacerlo por ti
strtolower(str_replace(array(' ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string))));
-
este también se deshace del .pdf al final, lo cual no quieres hacer
– Diana
18 de noviembre de 2020 a las 22:23
sushilprj
Aplicar esta expresión regular /[^a-zA-Z0-9]/, '-'
que reemplazará todos los caracteres no alfanuméricos con -
. Guárdelo en una variable y vuelva a aplicar esta expresión regular /\-$/, ''
que escapará del último carácter.
Es viejo, pero para ayudar a alguien, use esta función:
function urlSafeString($str)
{
$str = eregi_replace("[^a-z0-9\040]","",str_replace("-"," ",$str));
$str = eregi_replace("[\040]+","-",trim($str));
return $str;
}
le devolverá una cadena segura de URL
¿En qué quieres que se convierta tu URL?
http://kjd.case.150/1-BHK-Balcony-700-sqft-spaciou-apartmetn-Bandra-West
?–Eric
23 de julio de 2010 a las 13:30