zoukankan      html  css  js  c++  java
  • php验证输入字符串中含有非法字符

    $pattern = "/(&|"|<|>|')+/";
      preg_match($pattern, $media_name, $matches);
      var_dump($matches,$media_name); exit();
      if($matches){
       printJson(null,-12,'来源媒体名称含有非法字符,请重新输入');
      }

    一、利用正则表达式验证中文 注意UTF8编码和GB2312有所不同。 1.UTF8下的中文验证 
    $str1 = "编程"; $str = "php编程"; 
    if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) { print("该字符串全部是中文"); } else { 
    print("该字符串不全部是中文"); } 
    2.GB2312下中文的验证 
    if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $st_name){ print("该字符串全部是中文"); } else { 
    print("该字符串不全部是中文"); } 

    PHP中用正则表达式验证中文的有以下问题需注意 
    例如: 
    str = '中华人民共和国123456789abcdefg'; 
    echo preg_match("/^[u4e00-u9fa5_a-zA-Z0-9]{3,15}",strName); 
    运行一下上面这段代码,看会有什么提示信息? 
    Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X at offset 3 in F:wwwrootphp est.php on line 2 
    原来,PHP正则表达式中不支持下列 Perl 转义序列:L, l, N, P, p, U, u, or X 
    在 UTF-8 模式下,允许用“x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列 xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。 所以,可以这样来解决
    preg_match("/^[x80-xff_a-zA-Z0-9]{3,15}",strName);  
    一开始很是疑惑x80-xff只能匹配128个字符怎么就可以匹配成千上万的中文呢,原来x80-xff只是匹配中文双字节中的一个字节, 
    所以上面的正则表达式可以匹配范围是128*128个双字节字符
    http://wenku.baidu.com/view/6149c98f84868762caaed53d.html

    php匹配汉字、字母、数字、下划线/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u

    http://blog.csdn.net/lihaiboas1/article/details/7030735

  • 相关阅读:
    个人总结---小水长流,则能穿石
    软件工程与UML作业3(互评作业)
    软件工程与UML作业2
    软件工程与UML作业1
    大创省级答辩总结
    C语言知识汇编
    C语言知识点汇集
    C语言汇总3
    C语言汇总2
    c语言汇总1
  • 原文地址:https://www.cnblogs.com/andydao/p/3208989.html
Copyright © 2011-2022 走看看