2012-03-21 2 views
2

변수에서 특수 문자를 제거하는 다음 PHP 코드가 있습니다.특수 문자와 함께 PHP preg_replace 숫자 대체

<?php 
$name = "my%^[email protected]#name8"; 
$patterns = array('/\s+/' => '_', '/&/' => 'and', '/[^[:alpha:]]+/' => '_'); 
$name2 = preg_replace(array_keys($patterns), array_values($patterns), trim($name)); 
echo $name2; 
?> 

그러나 특수 문자와 함께 숫자도 밑줄 _으로 바뀝니다. 결과에 숫자를 포함하고 싶습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

5

세 번째 패턴 인 /[^[:alpha:]]+/은 문자가 아닌 모든 문자를 밑줄로 대체합니다. 예를 들어, /[^[:alpha:]0-9]+/

+0

있어 .. 고마워 ... :) –

2

'/[^[:alpha:][:digit:]]+/'으로 바꿉니다. 원본은 알파벳 문자가 아닌 것을 대체합니다. [: digit :]을 추가하면 문자 나 숫자가 아닌 다른 문자가 대체되므로 번호도 그대로 유지됩니다.