2013-02-12 140 views
1

在用户可以输入一些文本的窗体中。在验证PHP的,我想检查是否本文仅包含字母,数字和允许的特殊字符:.,:;'"/*[email protected]#<>&+-允许字母,数字和特定字符

$pattern = '/^i'; 
$chars = ".,:;'\"/*[email protected]#<>&+-"; 
$newString = htmlspecialchars($chars); 
if (!preg_match($pattern, $chars, $text)) $error = $error . "You can use only letters, digits and [.,:;'\"/*[email protected]#<>&+-]".'<br>'; 

$error变量被发送回网页的形式和那里显示。

我使用了错误的模式吗?无论我在输入框中输入什么内容,都会收到错误消息。

+2

你的正则表达式就是'/^i'。这不是一个有效的正则表达式。 – nickb 2013-02-12 19:29:34

+0

只有字母?哪些只有字母?你能否在你的问题中提供这些字符串作为PHP字符串? – hakre 2013-02-12 19:32:00

+0

我明白你的意思。起初我想到了英文字母的字符,但是最好让所有的字符,比如Ł,ß,等等。 – erdomester 2013-02-12 19:33:08

回答

3

下面是英文代码:

  • 设置$模式“/ ^我”
  • 设置$字符到允许的角色列表
  • 设置$ newString到的HTML编码版本$字符
  • 匹配“/^I”对你的角色的列表,并存储在$文本变量
  • 如果匹配失败的匹配,显示错误信息

那么,应该很明显你的问题是什么。 /^i是不是一个有效的正则表达式,如果它是在文本的开始寻找文字i,就是这样。

这里就是我想你的意思是:

$chars = ".:;'\"/*[email protected]#<>&+-"; 
if(preg_match("([^a-zA-Z0-9".preg_quote($chars)."])",$text)) $error .= "You can only...."; 
+0

谢谢!我修改它以允许空格:'([^ a-zA-Z0-9_'(对于新手:下划线和9之后的空格) – erdomester 2013-02-12 20:47:59

+0

我的评论如何:“最好还允许其他字母,如Ł,ß,å等。“你有什么想法吗?” – erdomester 2013-02-12 23:05:37

+0

我在评论中回复了你的意见 – 2013-02-12 23:34:14

相关问题