¿Cuál es la mejor manera de limpiar una cadena para colocarla en una URL, como el nombre de la pregunta en SO?
Estoy buscando crear una cadena de URL como la que SO usa para los enlaces a las preguntas. No estoy buscando reescribir la url (mod_rewrite). Estoy buscando generar el enlace en la página.
Ejemplo: el nombre de la pregunta es:
Is it better to use ob_get_contents() or $text .= ‘test’;
La URL termina siendo:
http://stackoverflow.com/questions/292068/is-it-better-to-use-obgetcontents-or-text-test
La parte que me interesa es:
is-it-better-to-use-obgetcontents-or-text-test
Así que, básicamente, estoy buscando limpiar todo lo que no sea alfanumérico mientras sigo leyendo la URL. He creado lo siguiente, pero no estoy seguro de si es la mejor manera o si cubre todas las posibilidades:
$str = urlencode(
strtolower(
str_replace('--', '-',
preg_replace(array('/[^a-z0-9 ]/i', '/[^a-z0-9]/i'), array('', '-'),
trim($urlPart)))));
Así que básicamente
recorta Reemplace cualquier no alfanumérico más el espacio sin nadathen reemplaza todo no alfanumérico con un guiónreemplazar con -strtolower()
urlencode()
- probablemente no sea necesario, pero solo por si acaso.