2011-02-24 84 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);