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


US Phone Numbers - Set the Area Code and Prefix Only to Variables

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

我使用的是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位区号和前缀正确显示。

我做错了什么?

'r'n上尝试explode,而不仅仅是'n——我猜您的数据包括回车和换行,这会使子字符串倾斜。

字符串子字符串(string$string,int$start[,int$length])参数为开始、长度(停止)。假设您有一个没有空格或其他字符的数字,例如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)