我需要一个PHP函数,它将字符串作为输入,并返回字符串减去所有这些字符: ! *'(); :@& = + $,/? %#[]
是否已为此目的构建了某些内容,还是可以使用正则表达式完成?我宁愿不对这个字符串做20个不同的str_replace函数调用。谢谢!
答案 0 :(得分:1)
$quoted = preg_quote('!*\'();:@&=+$,/?%#[]','/');
$sanitized = preg_replace('/['.$quoted.']/', '', $string);
如果一般情况下,你想要替换标点符号,请使用正则表达式类(它更短且可读):
$sanitized = preg_replace('/[[:punct:]]/', '', $string);
答案 1 :(得分: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);
答案 2 :(得分:0)
您可以使用strtr
(这是首选)或preg_replace
(速度较慢)。