PHP trim 函数引发崩溃且数据库保存失败技术
请慎用 PHP 的 trim 函数来去除额外的头尾字符,否则可能带来意外的不合法字符。
请看下面的例子🌰
var_dump(trim('血')); var_dump(trim('血', ' ')); var_dump(preg_replace('/^ | $/', '', ' 血 ')); return;
输出
string(3) "血" string(2) "?" string(3) "血"
上面的例子是用来去除文字两边的中文全角空格,结果在个别字结尾的时候就出现来问号,这个特殊的编码的字符导致数据库保存失败,直接 crash。
LmlException: HY000 1366 Incorrect string value: '\xE8\xA1</p>...' for column 'content' at row 1 in .php:109 Stack trace:
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
暂无