我在保存它之前制作了这个正则表达式来过滤某些文本,我的想法是只保留带有重音符号或字母的字母,空格和字母,但最后两个案例,作为重音 - 不起作用,我希望你能帮助我
if(preg_match("/^[a-zA-Z .\-]+$/i", $field)){
return true;
}else{
return false;
}
答案 0 :(得分:4)
你需要像/^[\pL\pM\p{Zs}.-]+$/u
这样的东西。
解释新位:
\pL
- 匹配Unicode字母类别中的任何内容\pM
- 组合标记(例如组合变音符号)\p{Zs}
- 空白分隔符u
- 模式和主题字符串被视为UTF-8 有关正则表达式(包括Unicode类别)中Unicode的更多信息,请参阅http://www.regular-expressions.info/unicode.html
答案 1 :(得分:2)
您可以在案例中添加重音字符:
if(preg_match("/^[A-Za-z\u00C0-\u017F\.\-]+$/i", $field)){
return true;
}else{
return false;
}
另一种方法是在运行正则表达式函数之前首先将单词转换为unicode以清理带重音的字符