2009-12-30 48 views
0

如何從給定字符串中排除@#$%^ & * *

+0

你的意思是像除外刪除或類似不允許? – Gumbo 2009-12-30 09:39:55

+1

'請你寄給我代碼','請幫助我'在你的問題中的部分是不需要的(並且在這裏通常會皺起眉頭)。只要以serieus的方式提問問題,你就會在這裏得到答案(不要求他們 - 請;-) – ChristopheD 2009-12-30 09:43:54

+1

@ChristopheD - 然後編輯它! – 2009-12-30 09:45:01

回答

1

試試這個:

$str= preg_replace("/[^a-zA-Z0-9_\-\/=]+/", "", 'your string here'); 

這樣只允許共同接受的字符。不包括你提到的字符。

或者你可以試試這個太:

$str = '@ # $%^&*'; 
$new_str = str_replace(array('@', '#', '$', '%', '^', '&', '*'), '', $str); 
print $new_str; 
+2

你不需要逃避裏面的'.'和'?'一個角色類。 – Gumbo 2009-12-30 09:40:42

+0

@ Gumbo:糾正它:) – Sarfraz 2009-12-30 09:44:41

5

您可以指定多個字符使用str_replace更換:

$s= 'what a @bad #$%^ string *'; 
$s= str_replace(array('@', '#', '$', '%', '^', '%', '*'), '', $s); 
echo($s); 

這將輸出繼電器:

what a bad string 
1
$thisIsaVeryBadStringIndeed = "@wh#at %a b^a&d @#$%^&*string"; 
$unWantedBadCharacters = "@#$%^&*"; 

$chars = preg_split('//',$unWantedBadCharacters); 

for ($i=0;$i<strlen($unWantedBadCharacters);++$i) 
    $pairs[$unWantedBadCharacters{$i}] = ''; 

$stringWithoutBadCharacters = strtr($thisIsaVeryBadStringIndeed,$pairs); 

這是fa之一ster方法。如果您只創建一次配對數組。

+0

哦,是的,我知道我不會取代個別字符。這真的是個問題嗎? – 2009-12-30 09:42:22

+1

+1,不應該downvote b/c問題是模糊的! – pix0r 2009-12-30 09:44:32

+0

我將問題解釋爲「@#$%^&*」是一個字符串,因爲您爲什麼會在那裏有兩個空格? – 2009-12-30 09:46:03

5

一個簡單的正則表達式將做這件事:

$str = preg_replace('/[@#$%^&*]/', '', $str); 
+1

在這裏使用正則表達式就像使用大炮來殺死一隻蒼蠅。 – 2009-12-30 09:52:36

+3

是嗎?編寫的時間越短,執行的速度越快,我可以想到的任何其他方式。 – 2009-12-30 09:53:53

+1

比一個簡單的'str_replace()'或者一個'strtr()'更快嗎? – 2009-12-30 09:55:40