特定の文字列の正規表現を作成しようとしています。
目標: 「ラテン語」、「小文字ギリシャ語」、または「数字」以外のすべての文字を削除します。
これまでに行ったこと: [^a-z0-9]
これはラテン文字に最適です。
私がこれを試してみると:[^a-z0-9α-ω]
運が悪い。動作しますが、!!#$%@%#$@,` のような他の記号は除外されます
正規表現に関しては、私の知識は限られています。どんな助けでも大歓迎です!
編集:
以下は、指定された文字に一致し、区切り文字としてダッシュを使用してスラッグを作成する関数です。
$q_separator = preg_quote('-');
$trans = array(
'&.+?;' => '',
'[^a-z0-9 -]' => '',
'\s+' => $separator,
'('.$q_separator.')+' => $separator
);
$str = strip_tags($str);
foreach ($trans as $key => $val){
$str = preg_replace("#".$key."#i", $val, $str);
}
if ($lowercase === TRUE){
$str = strtolower($str);
}
return trim($str, '-');
したがって、文字列が次の場合: OnCE on a tIME !#% @$$ in MEXIco
関数を使用すると、出力は次のようになります: once-upon-a-time-in-mexico
これは問題なく動作しますが、preg_match でギリシャ文字も除外する必要があります。