我需要将一个字符串作为输入一个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