Qual é a melhor maneira de limpar uma string para posicionamento em um URL, como o nome da pergunta no S
Estou procurando criar uma string de URL como a que o SO usa para os links para as perguntas. Não estou olhando para reescrever o URL (mod_rewrite). Estou olhando para gerar o link na página.
Exemplo: o nome da pergunta é:
Is it better to use ob_get_contents() or $text .= ‘test’;
A URL acaba sendo:
http://stackoverflow.com/questions/292068/is-it-better-to-use-obgetcontents-or-text-test
A parte em que estou interessado é:
is-it-better-to-use-obgetcontents-or-text-test
Então, basicamente, eu estou procurando limpar qualquer coisa que não seja alfanumérica, mantendo a URL legível. Criei o seguinte, mas não tenho certeza se é a melhor maneira ou se abrange todas as possibilidades:
$str = urlencode(
strtolower(
str_replace('--', '-',
preg_replace(array('/[^a-z0-9 ]/i', '/[^a-z0-9]/i'), array('', '-'),
trim($urlPart)))));
Então, basicamente
apara substitua qualquer não alfanumérico mais o espaço por nadaubstitua tudo que não é alfanumérico por um trasubstituir com -strtolower()
urlencode()
- provavelmente não é necessário, mas apenas para uma boa medida.