我正在尝试为任何给定的字符串创建一个正则表达式。
目标:删除所有不是“拉丁”或“小写希腊”或“数字”的字符。
到目前为止我所做的: [^a-z0-9]
这非常适合拉丁字符。
当我尝试这个时:[^a-z0-9α-ω]
没有运气。有效,但省略了任何其他符号,如 !!#$%@%#$@,`
当涉及到正则表达式时,我的知识是有限的。任何帮助将非常感激!
编辑:
下面发布的是匹配指定字符并从中创建一个 slug 的函数,用破折号作为分隔字符:
$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 on a tIME !#% @$$ in MEXico
这工作正常,但我希望 preg_match 也排除希腊字符。