我正在使用此日常數據Feed。令我驚訝的是,其中一個領域在MySQL之後看起來並不正確。 (我無法控制誰提供飼料。)如何在PHP中去除所有打印字符?
因此,我做了一個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確實去掉了< 200E>我提到看到 'VI',I」 m擔心它會以André這樣的名字去掉這封信的口音。
也許正則表達式是解決方案嗎?
來到我面前的第一個想法是一個正則表達式。也許:$ str = preg_replace('/ [^ a-z0-9 \。\,\ - \ s]/i','',$ str);將其他好字符放入正則表達式中。 – user4035
感謝您的發佈。這怎麼能適應包括字母的口音呢? (請參閱上面的編輯)。 – Edward
使用正則表達式和德語和法語特殊字符爲您添加了一個答案。 – user4035