我正在处理这个每日数据馈送。令我惊讶的是,其中一个字段在 MySQL 中看起来并不正确。(我无法控制谁提供提要。)
所以我做了一个 mysqldump 并发现该记录的邮政编码和城市包含一个非打印字符。它在“vi”中显示为:<200e>
我正在使用 PHP,我解析这些数据并将其放入 MySQL 数据库。我已经使用了修剪功能,但这并没有摆脱它。问题是,如果您对 MySQL 数据库中的邮政编码进行查询,它不会找到具有非打印字符的记录。
我希望在将其放入 MySQL 数据库之前对其进行清理。
我可以在 PHP 中做什么?起初我认为正则表达式只允许 az、AZ 和 0-9,但这对地址不利。地址使用句点、逗号、连字符,也许还有其他我目前没有想到的东西。
最好的方法是什么?除了只允许打印字符之外,我不知道它被称为什么来定义它。是否有另一个像 trim 这样的 PHP 函数可以完成这项工作?还是正则表达式?如果是这样,我想要一个例子。谢谢!
我已经研究过使用 PHP 函数,并在 PHP.NET 上看到了这个:
<?php
$a = "\tcafé\n";
//This will remove the tab and the line break
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
//This will remove the é.
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
?>
虽然使用 FILTER_FLAG_STRIP_HIGH 确实去除了我在“vi”中提到的 <200e>,但我担心它会去除 André 等名称中的字母重音。
也许正则表达式是解决方案?