2011-02-24 3 views
0

문자열을 입력으로 가져 오는 문자열을 빼고 문자열을 모두 반환하는 PHP 함수가 필요합니다. ! * '(); : @ & = + $, /? % # []문자열에서 특정 문자의 출현을 제거하는 PHP 함수

이미이 목적을 위해 만들어진 것이 있습니까? 아니면 정규식으로 수행 할 수 있습니까? 차라리이 문자열에 대해 20 가지 str_replace 함수 호출을 수행하지 않을 것입니다. 감사!

+0

블랙 리스팅 이상으로 화이트리스트를 작성해야하는 것 같습니다. 어떤 일을 허용하고 싶습니까? – chelmertz

+0

@chelmertz, 정말로 문자열에서 정확한 문자를 제거하면됩니다. 다른 모든 것은 공정한 게임입니다. –

답변

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); 
관련 문제