删除所有内容,除了PHP中的字母数字和欧洲字符

时间:2012-11-27 13:08:06

标签: php regex alphanumeric latin1

我正在努力验证我的评论脚本,我需要删除除西欧使用的所有非字母数字字符。

我的计划是将所有非字母数字字符改为:

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删除标点符号和空格

感谢您的快速回复

2 个答案:

答案 0 :(得分:11)

preg_replace('/[^\p{Latin}\d ]/u', '', $str);

答案 1 :(得分:0)

echo preg_replace('/[^A-Z0-9 £€áàâä...]/ui', '', $string);

重要的部分是/u标志。确保您的源代码和$string是UTF-8编码的。

我仍然认为这是错误的方法,因为它严重限制了用户可以输入的内容,而惹恼一些人,但不管你的船是什么...... BTW,你的列表中没有标点字符。