2014-09-11 2 views
0

잘못된 전화 번호를 감지하고 원래의 전화 번호로 바꿀 정규식을 작성하려고합니다. 나는 전화 번호가 있고 텍스트 (html 태그 포함)가있는 텍스트 필드는 잘못된 숫자 (어떤 이유로 든 숫자 사이에 여러 문자를 넣는 것과 같은 사이트 사용자)입니다. 여기에 내가 모든 대부분의 경우에 잘 작동하는 사용하지만,하고 무엇인가 :PHP에서 잘못된 전화 번호를 탐지하는 정규 표현식

$phone = '0888123123'; 
$text = 'Some html text with variants of the phone number in wrong format - 
0~8~8~8~1~2~3~1~2~3 
0.8.8.8.1.2.3.1.2.3 
0 8 8 8 1 2 3 1 2 3 
0888-123-123 
The last format does not work!'; 

preg_match_all('/('.implode('[\D]+', str_split($phone)).')/i', strip_tags($text), $matches); 

if (count($matches) > 0) { 
    foreach($matches as $value) { 
     $text = str_replace($value, $phone, $text); 
    } 
} 

내가 숫자 사이의 모든 숫자가 아닌 문자를 찾으려고하지만,이 숫자가 아닌 문자 모든 숫자 사이에있는 경우에만 작동 즉 0.8.8.8.1.2.3.1.2.3이지만 0888-123-123과 일치하지 않습니다. 이 정규 표현식에 나머지 케이스를 잡기위한 추가 사항이 있습니까?

+0

는 쉽게 더 INT 특정 자릿수 ... 또는 사용 전화의 캐리어 조회 API (예는 한입니다 전화를 감지하지 않으려면 http://www.telapi.com/docs/api/rest/ 이동 통신사 서비스/이동 통신사 조회 /)를 사용하여 유효한 이동 통신사가 없거나 –

+0

전화 번호를 확인할 수 있습니다. 텍스트 필드 안에는 사용자가 HTML 텍스트 안에 넣기 때문에 감지 할 수 없습니다. –

+0

아니, 그럴 수 없다 .. 아니면 전화 번호 이외의 문자 만 포함해서 숫자를 추출하고 날씨가 유효한지 확인하는 것보다 텍스트에 숫자가 있어야합니다. –

답변

0
[^\d\n] 

데모를 사용해보십시오.

http://regex101.com/r/nB2lL9/6

+0

그것은 작동합니다! 고마워,이 도구에 대해 몰랐고, 테스트를 위해 멋지다. –

관련 문제