:)
我正在尝试拆分由街道地址和两个电话号码组成的字符串。
这是变量 $ string
的var_dumpstring(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
有没有办法做到这一点?
答案 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位数字