我需要將一個字符串作爲輸入一個PHP函數去除特定字符的出現,並返回字符串減去這些字符的所有實例: ! *'(); :@ & = + $,/? %#[]PHP函數從字符串
是否有已建成的用於此目的的東西,也可以將其與正則表達式來實現?我寧願不對這個字符串做20個不同的str_replace函數調用。謝謝!
我需要將一個字符串作爲輸入一個PHP函數去除特定字符的出現,並返回字符串減去這些字符的所有實例: ! *'(); :@ & = + $,/? %#[]PHP函數從字符串
是否有已建成的用於此目的的東西,也可以將其與正則表達式來實現?我寧願不對這個字符串做20個不同的str_replace函數調用。謝謝!
您可以使用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);
可以使用strtr
(這是優選的)或preg_replace
(這是更慢)。
$quoted = preg_quote('!*\'();:@&=+$,/?%#[]','/');
$sanitized = preg_replace('/['.$quoted.']/', '', $string);
如果在一般情況下,你想標點符號更換,使用正則表達式類,而不是(這是短,可讀):
$sanitized = preg_replace('/[[:punct:]]/', '', $string);
這聽起來像你需要比列入白名單,黑名單多。你想要做什麼? – chelmertz 2011-02-24 17:56:57
@chelmertz,我真的只需要從一個字符串中刪除那些確切的字符。其他一切都是公平的遊戲。 – 2011-02-24 18:11:30