如何确保字符串仅包含预定义字符的预定义列表中的字符?

时间:2010-12-17 03:10:13

标签: php validation character

假设我有一个带有文本字段的HTML页面,要求用户输入单词。然后,我在PHP脚本中使用$_POST[]变量来使用变量并执行一些操作。我的页面和我的PHP脚本可以使用UTF-8编码,因此用户可以输入任何内容。

我想知道的是,如何确保用户输入的单词中包含的所有字符都是预定义字符列表的一部分?

例如,列表将包含字符0到9,a到z,A到Z,还有一些其他字符,如ü,ù,ô,é,à,ẑ等。我不想要的,它的字符就像来自俄语字母,如а,з,б,у等等,以及其他种类的异域人物。

我可以使用正则表达式,但它是最合适的解决方案吗?不是太慢了?包含所有字符的数组怎么样?循环遍历单词的每个字符并循环遍历接受的字符数组并测试每个组合,这是我还是听起来很慢。

你知道一个好的解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:2)

RE很快,它们是要走的路。创建所需字符列表,然后反转匹配感,如下所示。

if re.match(".*[^abcA-Z]", "d"):
  print "Your string has illegal characters"