2014-01-12 65 views
1

我有一個很長的字符串,我想用PHP的preg_replace來清理白名單。這些數據已經有些編碼了,並且都是ANSI的,不需要擔心Unicode。非常簡單的RegEx表達式不起作用

我想要做的是將特定白名單外的任何字符轉換爲破折號。

preg_replace("[^0-9A-Za-z/\-_.?=:]", "-", $input); 

我的理解是,[]是一個字符集,然後我開始寫我想允許,沒有逃脫這裏所需要的字符,以^否定它。

但它不工作:串出來的preg_replace完全一樣,進去如果我把一個%%出來,我不希望出現這種情況,我想它轉換成一個破折號。 。

謝謝你的時間。

回答

1

你必須寫regex delimiters

preg_replace("#[^0-9A-Za-z/\-_.?=:]#", "-", $input); 

或更好:

preg_replace("#[^\w/.?=:-]#", "-", $input); 
+1

驚人!這是固定的,非常感謝。我會盡可能標記答案。 – niemiro

+0

不客氣,很高興幫助。 – anubhava

相關問題