Немного более чистый способ сделать это в PHP как минимум:
function CleanForUrl($urlPart, $maxLength = null) {
$url = strtolower(preg_replace(array('/[^a-z0-9\- ]/i', '/[ \-]+/'), array('', '-'), trim($urlPart)));
if ($maxLength) $url = substr($url, 0, $maxLength);
return $url;
}
Можно также выполнить trim()
в начале, чтобы потом было меньше обработки, а полная замена выполняется в preg_replace()
.
Thxs to cg за то, что придумал большую часть этого: Каков наилучший способ очистки строки для размещения в URL, например, имени вопроса в SO?