次の関数は、あらゆる種類の文字を含むニュースや製品のタイトルからURLを書き換えます。作成したい文字列は、英数字の値と「-」のみで構成されていますが、末尾の「-」や空白、繰り返しの「-」は含まれていません。以下の関数は問題なく動作しますが、もっと簡単または効率的に書く方法はないかと思いました。
function urlName($string) {
$string = trim($string); // no open ends
$string = strtolower($string); // all lowercase
$string = strtr($string, 'äöåÄÖÅ', 'aoaaoa'); // substitute umlauts
$string = preg_replace('/[\W]+/', '-', $string); // substitute non-word characters with -
$string = preg_replace('/^-*|-*$/', '', $string); // no beinging or ending -
return $string;
}