에이바*_*에이바 5 php regex preg-replace
有人可以帮助调试此错误吗?
警告:preg_replace()[function.preg-replace]:编译失败:在偏移量1处不重复
//Generate uid
function gen_uid($len=40) {
$hex = md5("what" . uniqid("", true));
$pack = pack('H*', $hex);
$tmp = base64_encode($pack);
$uid = preg_replace("#(*UTF8)[^A-Za-z0-9]#", "", $tmp);
$len = max(4, min(128, $len));
while (strlen($uid) < $len)
$uid .= gen_uid(22);
return substr($uid, 0, $len);
}
Run Code Online (Sandbox Code Playgroud)
是什么导致这个?它是PHP问题还是其他什么?应用程序在我的本地计算机上运行正常但在服务器上运行不正常
nic*_*ckb 10
*在正则表达式中意味着匹配前一个字符0次或更多次,同时(启动捕获组.因此,*没有什么可重复的,因为在*a 之前出现的是a (,它本身不能重复,因此这个警告.
要解决它,只需逃避*,如下:
$uid = preg_replace("#(\*UTF8)[^A-Za-z0-9]#", "", $tmp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9657 次 |
| 最近记录: |