我试图允许中文,日文(平假名,片假名,汉字),韩文,以及基本上任何unicode信。我希望第一个字符成为一个字母
$pattern = '/\p{L}[\p{L}\p{N} _.-]+/u';
if(!preg_match($pattern, $subuser)){
//Error
}
然而,我的模式似乎接受前面带数字的字符串。当我添加:
'/^\p{L}[\p{L}\p{N} _.-]+$/u'
没有接受任何字符串。我尝试过使用\ p {Hiragana}等,但没有真正的运气。有人看到我做错了吗?
答案 0 :(得分:2)
这应该可以解决问题:
<?php
$lines = array('12345', 'w123', 'hello');
$valid = array_filter($lines, function($line){
return preg_match('/^\p{L}{1,}/iu', $line);
});
var_dump($valid);
答案 1 :(得分:1)
卫生方面的圣杯:http://htmlpurifier.org/ 它清理所有数据,只允许utf-8字符通过。 一些建议的字符阅读:http://htmlpurifier.org/docs/enduser-utf8.html