kyl*_*lex 3 php mysql whitespace trim utf-8
我在MySQL的文本字段中的段落开头有一些空格.
使用trim($var_text_field)的PHP或TRIM(text_field)MySQL中的语句也绝对没有什么.这个空白是什么,我如何通过代码删除它?
如果我进入数据库并将其退出,它会正确保存.它只是没有通过trim()函数删除.
Bob*_*ein 12
function UberTrim($s) {
$s = preg_replace('/\xA0/u', ' ', $s); // strips UTF-8 NBSP: "\xC2\xA0"
$s = trim($s);
return $s;
}
Run Code Online (Sandbox Code Playgroud)
不间断空间的UTF-8字符编码Unicode(U + 00A0)是2字节序列 C2 A0.我试图使用第二个参数,trim()但没有做到这一点.使用示例:
assert("abc" === UberTrim(" \r\n \xc2\xa0 abc \t \xc2\xa0 "));
Run Code Online (Sandbox Code Playgroud)
TRIM(text_field)由于@RudolfRein的评论,MySQL替换它也会删除UTF不间断空格:
TRIM(REPLACE(text_field, '\xc2\xa0', ' '))
Run Code Online (Sandbox Code Playgroud)
(这里有更多检查)
确保您的MySQL客户端设置为UTF-8字符编码(此处和此处更多),例如
$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" />
小智 5
如果问题出在 UTF-8 NBSP 上,另一个简单的选择是:
REPLACE(the_field, UNHEX('C2A0'), ' ')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6724 次 |
| 最近记录: |