str_replace - Reemplace todos los espacios y símbolos especiales con guiones en la URL usando el lenguaje PHP
url encode php (5)
¿Cómo reemplazar espacios y guiones cuando aparecen juntos con solo guiones en PHP?
por ejemplo, a continuación es 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 sustituyo el guión por un carácter especial, entonces se convierte en dos guiones porque ya hay un guión en la URL y solo quiero 1 guión.
Aplique 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 se escapará del último carácter.
Es una vieja huella, pero para ayudar a alguien, usa esta función:
function urlSafeString($str)
{
$str = eregi_replace("[^a-z0-9/040]","",str_replace("-"," ",$str));
$str = eregi_replace("[/040]+","-",trim($str));
return $str;
}
te devolverá una cadena url segura
Esto debería hacerlo por ti.
strtolower(str_replace(array('' '', '' ''), ''-'', preg_replace(''/[^a-zA-Z0-9 s]/'', '''', trim($string))));
Si pudiera haber un máximo de un espacio alrededor del guión, puede usar la respuesta de John . Si puede haber más de un espacio, puede intentar usar preg_replace :
$str = preg_replace(''//s*-/s*/'',''-'',$str);
Esto reemplazaría incluso a -
no rodeado de espacios con -
!!
Para hacerlo un poco más eficiente podrías hacer:
$str = preg_replace(''//s+-/s*|/s*-/s+/'',''-'',$str);
Ahora esto aseguraría que a -
tenga al menos un espacio rodeándolo mientras se reemplaza.
Yo diría que tal vez lo quieras de otra manera. No "espacios" sino todos los caracteres no alfanuméricos. Debido a que puede haber otros caracteres, no permitidos en la URl (signo +, por ejemplo, que se usa como reemplazo de espacio)
Por lo tanto, para hacer una URL válida de un texto de forma libre
$url = preg_replace("![^a-z0-9]+!i", "-", $url);