从字符串php中删除所有未知字符

时间:2019-05-24 17:10:59

标签: php

我有一个宁静的Web服务,该服务获取输入字符串,对其进行清理并将其保存到MySQL数据库。

我的工作流程如下: 我得到线,修剪它。然后,我删除所有非字母数字字符,并留下下划线。然后我将下划线替换为空格。然后将其保存到数据库。

    $trimmedName = trim($name);
    $replacedName = preg_replace("/[^0-9a-zA-Z_]/", "", $trimmedName);
    $sanitizedName = trim(str_replace("_", " ", $replacedName));

问题是,这可以在99%的时间内正常工作。但是有时候,我在数据库中看到一个正方形符号。我没有那张照片,但您明白了。我不确定这是什么,为什么我的preg_replace不能将其删除。我认为有人试图利用此错误,所以我想知道我的正则表达式有什么问题,为什么它会留下一些未知字符。

1 个答案:

答案 0 :(得分:1)

这可能是由于保存字符所致。名称上有一些字母重音。这意味着您要检查字符编码,并在代码头中将其设置为UTF-8。

PHP

header('Content-Type: text/html; charset=utf-8');

还要确保数据库表的字符集是UTF-8

您可以更新表 MySQL

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;