PHP函数用于从字符串中删除某些字符的出现

时间:2011-02-24 17:53:14

标签: php regex string

我需要一个PHP函数,它将字符串作为输入,并返回字符串减去所有这些字符: ! *'(); :@& = + $,/? %#[]

是否已为此目的构建了某些内容,还是可以使用正则表达式完成?我宁愿不对这个字符串做20个不同的str_replace函数调用。谢谢!

3 个答案:

答案 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(速度较慢)。