【发布时间】:2012-09-04 15:08:22
【问题描述】:
有人可以帮助调试这个错误吗?
警告: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);
}
这是什么原因造成的?是 PHP 问题还是其他问题?该应用程序在我的本地机器上运行良好,但在服务器上却不行。
【问题讨论】:
-
在您的本地计算机上看起来“工作正常”的事实令人担忧。请在您的本地计算机中也启用警告并调查它为什么会工作,因为它应该由于答案中提到的原因而失败。
-
@eis,我当地的坚持没有显示任何警告或错误。
-
你应该启用它们,这样它会......
-
@eis,我用 ini_set('display_errors','On'); error_reporting(E_ALL);
-
我想通了,它与使用不同正则表达式编译器的服务器上的 PHP 有关。
标签: php regex preg-replace