2012-07-10 38 views
2

我有電話號碼。如果數字的第一個數字字符不是1,我需要添加它。我無法找到如何使用preg_match做到這一點,或者有其他方法嗎?如何獲得preg_match的第一個數字字符?

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

您是否試圖確定字符串的第一個字符是否爲1,或者字符串中的第一個數字字符是否是1?即「+46010398765」可能是瑞典的電話號碼。你如何處理它? – ghoti 2012-07-10 11:49:36

+0

瑞典數字可能不是最好的例子。我在北美,所以技術上我的電話號碼以「+1」開頭。所以「+」是第一個字符,因此應該預設一個「1」? – Graham 2012-07-10 12:03:37

回答

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_matchpreg_replace這裏,下面簡單的解決辦法應該工作

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

如果我的號碼是「+14159876543」,會發生什麼情況? – ghoti 2012-07-10 11:48:38

+1

問題不在於替換字符串的第一個字符。 – Stano 2012-07-10 12:02:11

0

使用

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

它應該做的伎倆!

2

的第一個非數字字符並不總是在位置1的陣列中,如果我正在閱讀你的問題。

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

返回4

+0

如果這是個問題,Ghoti的答案是有效的。如果問題是隻有數字不是以'1'開頭才能匹配一個數字,那麼我的答案就會起作用。選一個 ;-) – 2012-07-10 12:22:22

相關問題