美国电话号码 - 将区号和前缀仅设置为变量

时间:2011-05-22 04:07:10

标签: php phone-number

我有一个关于在字符串的中间或开头找到字符(我的情况下是数字)的问题。

我正在使用10位数的美国电话号码,我想将区号和电话号码的前缀保存到两个单独的变量中。现在我只是回应它们,因为我无法正常工作但后来我将使用变量搜索数据库以确定电话服务提供商。

我需要能够剪切并粘贴一个电话号码列表,而无需全部输入。我正在使用文本区域,这就是我现在所拥有的:

<?php
if (isset($_POST['submit'])) {

$fullnumber = trim($_POST['numbers']);
$onenumber = explode("\n", $fullnumber);

foreach ($onenumber as $line) {

$area = substr("$line", 0, -7);  // returns the first three numbers of the phone number
$prefix = substr("$line", 3, -4);  // returns the 3rd, 4th and 5th digit of the phone number

echo "Area code: " .$area;
echo "<br />";
echo "Prefix: " .$prefix;
echo "<br />";
}

}
else
{
?>
<html>
<head>
<title>Phone Verification</title>
</head>
<body>
<br />
<form method="post" action="<?php echo $PHP_SELF;?>">
Enter Phone Numbers:<br />
<textarea rows="20" cols="10" name="numbers" wrap="physical"></textarea>
<input type="submit" value="submit" name="submit">
</form>
<?php
}
?>

正在发生的事情是电话号码将包含4位区号和4位前缀,但最后一位将正确显示,区号和前缀为3位数。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试explode \r\n而不只是\n - 我猜你的数据包括回车以及扭曲你的子串的换行符。

答案 1 :(得分:0)

string substr(string $ string,int $ start [,int $ length]) 参数是start,length(stop)。假设您有一个没有空格或其他字符的数字5553332222 改变这个

$area = substr("$line", 0, -7);  
$prefix = substr("$line", 3, -4);

到这个

$area = substr("$line", 0, 3); // start at 0, go 3  (555)
$prefix = substr("$line", 3, 3); // start at 3 go 3 (333)