我在MySQL的文本字段中的段落开头有一些空格.
在PHP语句中使用PHP中的trim($var_text_field)或在MySQL语句中使用TRIM(text_field)绝对没有.这个空白是什么,我如何通过代码删除它?
如果我进入数据库并将其退出,它会正确保存.它只是没有通过trim()函数删除.
解决方法:
function UberTrim($s) {
$s = preg_replace('/\xA0/u', ' ', $s); // strips UTF-8 NBSP: "\xC2\xA0"
$s = trim($s);
return $s;
}
不间断空间的UTF-8字符编码Unicode(U 00A0)是2-byte sequence C2 A0.我试图利用second parameter to trim(),但这并没有成功.使用示例:
assert("abc" === UberTrim(" \r\n \xc2\xa0 abc \t \xc2\xa0 "));
由于@RudolfRein的评论,一个MySQL替换TRIM(text_field)也删除了UTF不间断空格:
TRIM(REPLACE(text_field, '\xc2\xa0', ' '))
UTF-8清单:
(更多检查here)
>确保您的PHP源代码编辑器位于UTF-8 mode without BOM.或者在preferences中设置.
>确保您的MySQL客户端设置为UTF-8字符编码(更多here和here),例如
$pdo = new PDO(‘mysql:host = …; dbname = …; charset = utf8’,$userid,$password);
$pdo-> exec(“SET CHARACTER SET utf8”);
>确保您的HTTP服务器设置为UTF-8,例如Apache:
AddDefaultCharset UTF-8
>确保浏览器需要UTF-8.
header(‘Content-Type:text / html; charset = utf-8’);
要么
< meta http-equiv =“Content-Type”content =“text / html; charset = utf-8”/>
标签:php,mysql,trim,whitespace,utf-8
来源: https://codeday.me/bug/20190712/1440820.html