将php中的字符串拆分为地址和电话号码(移动和传真)

时间:2017-01-06 19:46:36

标签: php string split

:)

我正在尝试拆分由街道地址和两个电话号码组成的字符串。

这是变量 $ string

的var_dump
  

string(74)“ Via Alsazia 3 Scala A Int 1 35127 PADOVA(PD)049 774266   049 775756

我尝试用这段代码拆分每一块:

$split = preg_split(')', $string);
$address = $split[0];
$split_two =preg_split(' ' ,  $split[1]);
$fax = $split_two[0];
$mobile = $split_two[1];

但它只给我这个

  

V

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

没有正则表达式的一种方法:

$parts = explode(' ',$str);
$phone1 = array_pop($parts);
$phone1 = array_pop($parts)." ".$phone1;
$phone2 = array_pop($parts);
$phone2 = array_pop($parts)." ".$phone2;

..假设电话号码始终采用相同的格式。

这是一个小提琴:https://3v4l.org/Qp0kS

答案 1 :(得分:0)

你肯定需要启用警告显示

无论如何,为了解决你的问题,你可以尝试:

<?php
$string = " Via Alsazia 3 Scala A Int 1 35127 PADOVA (PD) 049 774266 049 775756 ";

$split = explode(')', trim($string)); // note trim and explode
$address = $split[0];
$split_two = explode(' ' ,  trim($split[1])); // note trim
$fax = $split_two[0].' '.$split_two[1]; // note indexes
$mobile = $split_two[2].' '.$split_two[3]; // note indexes

echo 'fax '.$fax."<br>\n";
echo 'mobile '.$mobile."<br>\n";
?>

另一个变体是:

<?php
$string = " Via Alsazia 3 Scala A Int 1 35127 PADOVA (PD) 049 774266 049 775756 ";

preg_match('/^([^\)]+)\) +(\d+ \d+) +(\d+ \d+)$/', trim($string), $matches);

$address = $matches[1];
$fax = $matches[2];
$mobile = $matches[3];

echo 'address '.$address."<br>\n";
echo 'fax '.$fax."<br>\n";
echo 'mobile '.$mobile."<br>\n";
?>

答案 2 :(得分:0)

您可以尝试使用以下regex

(.*?)(\d{3}\s\d{6})\s(\d{3}\s\d{6})$

第一组懒惰匹配任何字符 - 它是地址

第二组和第三组按照以下格式匹配行尾的电话号码:

  

3位数字空格6位数字