2012-07-10 123 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

相关问题