在我的字符串中,我有utf-8非破坏空间(0xc2a0),我想用其他东西替换它.
我用的时候
$str=preg_replace('~\xc2\xa0~', 'X', $str);
Run Code Online (Sandbox Code Playgroud)
它运作正常.
但是当我使用时
$str=preg_replace('~\x{C2A0}~siu', 'W', $str);
Run Code Online (Sandbox Code Playgroud)
找不到(并替换)不间断的空间.
为什么?第二个正则表达式有什么问题?
格式\x{C2A0}是正确的,我也用u旗帜.
升级到 mysql 5.7 后GET_LOCK停止工作,因为它在 mysql 5.5 上使用并且正如我预期的那样工作。我知道有关GET_LOCK5.7中的更改。作为描述在这里。
当我从 cmd 行执行相同的脚本两次 - 中间有小暂停 - 它按预期工作:第一个获取锁,第二个没有。
当我通过浏览器执行相同的 php 脚本两次时 - 中间有小暂停 - 都返回他们成功获取锁。这个结果不是我所期望的,它与 5.5 版以及我对GET_LOCK5.7 文档中描述的理解不同。
这是示例脚本locktest.php:
<?php
$host = 'localhost';
$db = 'enter_your_db';
$user = 'enter_your_username';
$pass = 'enter_your_password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, …Run Code Online (Sandbox Code Playgroud)