在检查长度以确保值可以放入数据库字段时,请注意使用正确的函数。
存在三种可能的情况
1. 最有可能的情况:数据库列为 UTF-8,长度以 Unicode 码点定义(例如,mysql varchar(200) 用于 utf-8 数据库)。
<?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);
?>