2011-02-24 81 views
0

我需要將一個字符串作爲輸入一個PHP函數去除特定字符的出現,並返回字符串減去這些字符的所有實例: ! *'(); :@ & = + $,/? %#[]PHP函數從字符串

是否有已建成的用於此目的的東西,也可以將其與正則表達式來實現?我寧願不對這個字符串做20個不同的str_replace函數調用。謝謝!

+0

這聽起來像你需要比列入白名單,黑名單多。你想要做什麼? – chelmertz 2011-02-24 17:56:57

+0

@chelmertz,我真的只需要從一個字符串中刪除那些確切的字符。其他一切都是公平的遊戲。 – 2011-02-24 18:11:30

回答

1

您可以使用str_replace函數與數組:

// $arrayOfCharsToReplace = array('!','*', ...etc 

$clean = str_replace(
    $arrayOfCharsToReplace, 
    array_fill(0, count($arrayOfCharsToReplace), ''), // array of empty strings 
    $unclean 
); 

你也可以用strtr這樣的:

// $arrayOfReplacements = array('!' => '', '*' => '', ...etc 

$clean = strtr($unclean, $arrayOfReplacements); 
0

可以使用strtr(這是優選的)或preg_replace(這是更慢)。

1
$quoted = preg_quote('!*\'();:@&=+$,/?%#[]','/'); 
$sanitized = preg_replace('/['.$quoted.']/', '', $string); 

如果在一般情況下,你想標點符號更換,使用正則表達式類,而不是(這是短,可讀):

$sanitized = preg_replace('/[[:punct:]]/', '', $string);