我正在努力验证我的评论脚本,我需要删除除西欧使用的所有非字母数字字符。
我的计划是将所有非字母数字字符改为:
preg_replace("/[^A-Za-z0-9 ]/", '', $string);
但到目前为止,所有欧洲角色和一个英镑符号都被删除,因此“CaféRouge”变成了“Caf Rouge”。
如何在上述正则表达式中添加欧元字符数组。
数组是:
£, €,
á, à, â, ä, æ, ã, å,
è, é, ê, ë,
î, ï, í, ì,
ô, ö, ò, ó, ø, õ,
û, ü, ù, ú,
ÿ,
ñ,
ß
我使用UTF-8
SOLUTION:
$comment = preg_replace('/[^\p{Latin}\d\s\p{P}]/u', '', $comment);
和
$name = preg_replace('/[^\p{Latin}]/u', '', $name);
$ name aslo删除标点符号和空格
感谢您的快速回复
答案 0 :(得分:11)
preg_replace('/[^\p{Latin}\d ]/u', '', $str);
答案 1 :(得分:0)
echo preg_replace('/[^A-Z0-9 £€áàâä...]/ui', '', $string);
重要的部分是/u
标志。确保您的源代码和$string
是UTF-8编码的。
我仍然认为这是错误的方法,因为它严重限制了用户可以输入的内容,而会惹恼一些人,但不管你的船是什么...... BTW,你的列表中没有标点字符。