リンクのタイトルを準備するためにこのコードを作成しましたが、少しかさばると思います。正規表現をよく理解している人が、次の関数を減らすことができるかどうか疑問に思っています(関連するpreg_replacesをマージすることによって)。現在のすべてのハイフンを削除し、複数のスペースを削除し、スペース置換ハイフンを除いて英数字のみであることを確認し、すべてのスペースを単一のハイフンに置き換え、文字列がハイフンで始まらないようにする必要があります。
function prepareURLTitle($title)
{
return preg_replace("/\A-/", "", str_replace(" ", "-", preg_replace("/[^a-zA-Z0-9\s]/", "", preg_replace('/\s\s+/', ' ', preg_replace('/\s?-/', '', $title)))));
}
入力とその出力の例:
入力:
真新しい-手袋、2パック//ここには複数のスペースがありますが、ブロッククォートではそれらを表示できません
出力:
真新しい-手袋-2パック