在检查长度以确保值适合数据库字段时,请注意使用正确的函数。
有三种可能的情况
1. 最可能的情况:数据库列是 UTF-8,长度以 Unicode 代码点定义(例如,用于 utf-8 数据库的 mysql varchar(200))。
<?php
mb_strlen($value);
iconv_strlen($value);
mb_strlen($value, "UTF-8");
iconv_strlen($value, "UTF-8");
strlen(utf8_decode($value)); grapheme_strlen($value); ?>
2. 数据库列的长度以字节定义(例如,oracle 的 VARCHAR2(200 BYTE))。
<?php
strlen($value);
mb_strlen($value, "8bit")
?>
3. 数据库列使用其他字符集(UTF-16、ISO-8859-1 等),长度以字符/代码点定义。
查找使用的字符集,并将其显式传递给长度函数。
<?php
mb_strlen($value, $charset);
iconv_strlen($value, $charset);
?>