php用正则表达抓取网页中文章(之前突然感兴趣写的一个三合一三合一收款码程序(图))

优采云 发布时间: 2021-09-30 04:05

  php用正则表达抓取网页中文章(之前突然感兴趣写的一个三合一三合一收款码程序(图))

  前言

  我突然对写一个三合一的支付代码程序感兴趣,因为它只是为了好玩。我不太关心密码验证。可以使用纯数字。随着越来越多的用户觉得密码有点弱,今天下午想着改验证规则,想了想,觉得QQ密码的验证还不错@(呵呵),于是去了QQ注册官网提取规律,先放到网页注册js里面测试一下,验证没问题。于是我开始放服务器端验证,直接给我报错。之前没在意,所以搜索了一下,发现js和PHP的规律性还是有一点区别的。

  事实证明,PHP 正则表达式不支持以下 Perl 转义序列:

  \L, \l, \N, \P, \p, \U, \u, or \X

  PHP正则表达式校验中文问题,感觉PHP不支持perl转义还是挺烦的。

  解决这个问题

  $str = '教书先生博客blog.oioweb.cn';

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:\wwwroot\php\test.php on line 2

  在UTF-8模式下,允许使用“x{...}”,大括号中的内容为一串十六进制数字。如果其值大于 127,则原创十六进制转义序列 xhh 匹配双字节 UTF-8 字符。

  所以,可以这样解决:

  preg_match("/^[\x80-\xff_a-zA-Z0-9]{3,15}$",$strName);

  代码显示如下:

  把我的密码验证正则:(8-16位密码,不能有空格,必须至少收录两个数字、字母或字符))

  js:

  

checkPassword("教书先生博客:blog.oioweb.cn");

function checkPassword(password)

{

var reg=/(?!.*\s)(?!^[\u4e00-\u9fa5]+$)(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^.{8,16}$/;

if(!reg.test(password))

{

alert("8-16位密码,不包含空格,必须包含数字,字母或字符至少两种!");

document.form.password.focus();

return false;

}

return true;

}

  PHP:

  我希望能有所帮助!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线