在REGEXP
- REG#1139 -
mysql
时出错
收到错误'这个版本的PCRE编译时没有UTF支持偏移0'
来自xampp
ubuntu
的正则表达式,
PHP版本5.6.15
mysqlnd 5.0.11-dev - 20120503
答案 0 :(得分:8)
从ubuntu 14.04升级到16.04后,我遇到了同样的错误。
我使用lampp 5.6.20并且在使用REGEXP的请求中出现了相同的错误。
使用以下命令,我发现这个lib doens没有UTF-8支持:
var re = /[^\W_]+(?:\[([^\][]*)]|-([^_]+))/g;
var str = '_foo-2_bar-12_un[3;1]iver[3]se[3-7]';
var res = [];
while ((m = re.exec(str)) !== null) {
res.push(m[0]);
if (m[1]) {
res.push(m[1]);
} else {
res.push(m[2]);
}
}
document.body.innerHTML = "<pre>" + JSON.stringify(res, 0, 4) + "</pre>";
我发现我必须使用以下选项重新编译我的灯泡PCRE:
$ /opt/lampp/bin/pcretest -C
...
No UTF-8 support
...
为此,我下载了pcre-8.38并在解压缩的文件夹中执行了下一个命令:
--enable-utf8 --enable-unicode-properties
然后我将$ ./configure --enable-utf8 --enable-unicode-properties
$ make
$ sudo make install
文件夹中的所有生成文件复制到.libs
文件夹:
/opt/lampp/lib
然后确认支持UTF-8:
$ sudo cp .libs/* /opt/lampp/lib
最后我重启了我的灯(重启mysql或MariaDB):
$ /opt/lampp/bin/pcretest -C
...
UTF-8 support
...