2012-12-27 22 views
0

我試圖篩選出所有非拉丁字符,如γειά σου使用JavaScript /正則表達式,同時允許特殊字符,如[email protected]#$%^&*()
但是,如果JS是不可能的,那麼用preg_replace也許PHP的。

我用盡JS str = str.replace(/[^a-z0-9\-.,:;]/i, "");但沒有做任何事情。

用PHP $str = preg_replace('[^a-zA-Z0-9\xC0-\xFF]', '', $str);,但得到了同樣的結果。
檢測和剔除任何外國文字,同時保持特殊字符

然而,這echo htmlentities($str, ENT_QUOTES, "ISO-8859-1");給了我亂碼,enter image description here
也許我能以某種方式檢測?

問:什麼是做到這一點的最好方法是什麼?

+0

你的JS正則表達式有一個無效的分隔符混搭,你的PHP變種都沒有。爲什麼你在'UTF-8'文本上應用ISO-8859-1字符集呢? – mario

+0

@mario我看到使用PHP,暗示和試了一下後,但顯然這wasnt正確的做法 –

+1

JavaScript不支持Unicode。 – gdoron

回答

1

這似乎當我測試它可以工作,但你要仔細檢查:

$output = preg_replace('/[^(\x20-\x7F)]*/','', $output);