php - 我如何在 PHP 中删除除打印字符以外的所有内容?

标签 php regex

我正在处理这个每日数据提要。令我惊讶的是,其中一个字段在 MySQL 中看起来并不正确。 (我无法控制谁提供提要。)

所以我做了一个 mysqldump 并发现该记录的邮政编码和城市包含一个非打印字符。它在'vi'中显示如下: <200e>

我在 PHP 中工作,我解析这些数据并将其放入 MySQL 数据库。我对此使用了修剪功能,但这并没有摆脱它。问题是,如果您对 MySQL 数据库中的邮政编码进行查询,它不会找到具有非打印字符的记录。

我想在将其放入 MySQL 数据库之前对其进行清理。

我可以用 PHP 做什么?起初我以为正则表达式只允许 a-z、A-Z 和 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é。

也许正则表达式是解决方案?

最佳答案

您可以使用 PHP 过滤器:http://www.php.net/manual/en/function.filter-var.php

我建议使用 FILTER_SANITIZE_STRING 过滤器,或任何适合您需要的过滤器。

关于php - 我如何在 PHP 中删除除打印字符以外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296234/

相关文章:

javascript - jquery ajax 返回 404 未找到

java - XML 中的通配 rune 件匹配

JavaCC - 匹配除其他一些单词之外的一些单词

java - 将字符串拆分为特定大小的 String[]

php - MySQL 数据建模 : Multiple user types/Activity/Following

php - yii 关系复杂事件记录任务

php - 如何限制用户在 24 小时内可以给的票数?

PHP - 检查字符串是否与模式相似

java - 正则表达式不从 html 标签中提取图像 url

php - 长时间运行的控制台命令速度变慢