2012-07-10 2 views
2

전화 번호가 있습니다. 숫자의 첫 번째 숫자가 1이 아니면 추가해야합니다. preg_match로 어떻게하는지 알 수 없거나 다른 방법이 있습니까?preg_match로 첫 번째 숫자 문자를 가져 오는 방법은 무엇입니까?

$first_number = $number; 
if(preg_match('something', $first_number, $result)) 
{ 
$first_number = '1'. $result[1]; 
} 
+0

문자열의 FIRST CHARACTER가 1인지 또는 문자열의 첫 번째 숫자가 1인지 여부를 확인하려고합니까? 나는. '+46010398765'는 스웨덴 전화 번호 일 수 있습니다. 어떻게 처리합니까? – ghoti

+0

스웨덴 숫자가 가장 좋은 예는 아닙니다. 나는 북아메리카에있어, 기술적으로 나의 전화 번호는 "+1"로 시작한다. 첫 번째 문자는 "+"따라서 앞에 붙는 "1"이어야합니까? – Graham

답변

3

여기 정규식에 갈 필요가 없습니다.

if($first_number[0] != '1') { 
    $first_number = '1'.$first_number; 
} 

을하지만 수는 선행 공백이 있거나 수 있다면 + 기호 당신이 할 수 있습니다 : 당신은 할 수

if(preg_match('/^(\D*)(\d)/',$first_number,$match)) 
    $first_number = $match[1].'1'.$match[2]; 
} 
1

사용할 필요가 없습니다 preg_match 또는 여기 preg_replace, 아래의 간단한 솔루션은 트릭을해야 사용

'/^([^1][0-9]+)$/' 

if ($number[0] != 1) 
{ 
    $number.= '1'. $number; 
} 
+1

그리고 내 번호가 +14159876543이라면 어떻게됩니까? – ghoti

+1

문제는 string의 첫 번째 문자를 바꾸는 것이 아닙니다. – Stano

0

작동합니다!

2

첫 번째 숫자가 아닌 문자 배열의 위치 1에 항상하지 않습니다 너의 질문을 올바르게 읽는다면.

$n="foo 415"; 
preg_match("/^[^0-9]*([0-9])/", $n, $matches); 
print $matches[0]."\n";' 

4을 반환합니다.

+0

이것이 질문 인 경우, Ghoti의 답변이 작동합니다. 숫자가 '1'로 시작하지 않는 경우에만 숫자를 매칭해야한다는 질문에 답변하면 내 대답이 작동합니다. 하나를 선택 ;-) –

관련 문제