2012-02-17 4 views
3

전화 번호 입력란이있어 사용자가 원하는 형식으로 전화 번호를 추가 할 수 있습니다 (555-555-5555, (555) 555-5555). , 등).전화 번호 입력란 (PHP)의 번호 추출

전화 번호 필드에만 있기 때문에 필드의 숫자 이외의 모든 것은 무시할 수 있습니다.

현재 다음 코드를 사용하고 있습니다. 그것은 모든 숫자를 추출하지만 문제는 순서가 맞지 않다는 것입니다.

숫자를 원래 문자열에 나타나는 순서대로 어떻게 추출합니까?

preg_match_all('/\d+/', $Phone, $matches); 

$Phone = implode('', $matches[0]); 

편집 : 그들은이 기능에서 뒤죽박죽 위해 실제로 아니다 - 나는 jumbling을 야기 INT (10) 데이터베이스 필드에 숫자를 삽입했다. 그러나 아래 답변은 여전히 ​​내 목표를 달성하는보다 효율적인 방법입니다.

$numbers = preg_replace('/[^\d]/','',$Phone); 

답변

4

사용 preg_replace이 아닌 숫자를 제거하려면?

$number = preg_replace("/[^0-9]/", '', $Phone); 
2
$Phone = preg_replace('/[^\d]/', '', $Phone); 
2

가 왜 그냥 숫자가 아닌 문자열의 모든 것을 대체 :

+0

^\ d와 yo ur'^ 0-9'? –

+1

없음. \ d는 문자 클래스 [0-9]와 동일한 이스케이프 시퀀스입니다. 일부 이스케이프 시퀀스는 로캘 설정에 따라 다르지만 \ d는 믿을 수 없습니다. http://www.php.net/manual/en/regexp.reference.escape.php를 참조하십시오. –

0

시도 그것은

if (!preg_match("/^[0-9\-]*$/",$Phone)) { 
    echo "Only Numeric and strip (-)"; 
} 

예 :

좋은 : 0877-9320-9356

실패 : 0877 9320 9356 또는 087793209356

`사용하여 다른 예제의 차이점은 무엇