2017-06-28 46 views
0

我得到字符串结果从一个变量是这样的:PHP字符串分割操作

string(87) "Marko Petronijevic 
asdas 
Beograd, 12321 
T: 1232321 " 

其中,第一行是第一个和姓氏,第二和第三行是地址和最后一行的电话号码。

是否有可能以某种方式该字符串转换结果是:

First name: Marko Petronijevic 
Address: asdas, Beograd, 12321 
Phone: 1232321 

我试过爆炸功能,它是确定:

array(7) { 
     [0]=> string(5) "Marko" 
     [1]=> string(26) "Petronijevic asdas" 
     [2]=> string(5) "22" 
     [3]=> string(18) "/> Beograd," 
     [4]=> string(0) "" 
     [5]=> string(16) "12321 T:" 
     [6]=> string(11) "1232321 " 
     } 

但是,我所面临的问题是,我不知道名称是否有中间名,所以我无法确定使用这种数组格式。

请,如果任何人有一些想法如何分裂这是100%准确,让我知道。

+0

如果字符串包含中间名,字符串会是什么样子? –

+0

我建议你阅读这篇文章:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/,没有任何真正的任意规则可以100%工作。您应该有点要求您的客户输入两个不同的输入,如果您无法控制输入,那很难解决 – Kaddath

+0

如果有中间名,结果将是:名:Marko Midlename Petronijevic 地址:asdas,Beograd ,12321 Phone:1232321 – Milo

回答

0

您可以分割你的字符串,并设置一个小的线路配置是这样分割你的字符串。

$string = "Marko Petronijevic 
asdas 
Beograd, 12321 
T: 1232321"; 

$lines = [ 
0 => 'Name', 
1 => 'Address', 
2 => 'Place', 
3 => 'Tel' 
]; 

$array = explode("\n", $string); 

if (count($lines) == count($array)) { 
    $res = array_combine($lines, $array); 
    print_r($res); 
} 

结果: 阵列([名称] =>马尔科彼得罗尼耶维奇[地址] => asdas [地点] =>贝尔格莱德,12321 [联系电话] => T:1232321)

-1

您可以在每一个新行

$your_array = explode("\n", $your_string); 
0
<?php 

$str = "Marko Petronijevic asdas Beograd, 12321 T: 1232321 "; // Your String 

$divstr = explode(" ", $str); 

echo 'First Name :'. $divstr[0]; // Marko 
echo '<br>'; 
echo 'Middle Name :'.$divstr[1]; // Petronijevic 
echo '<br>'; 
echo 'Address :'.$divstr[2] . $divstr[3] . $divstr[4]; //asdas /Beograd, // 12321 
echo '<br>'; 
echo 'Phone :'.$divstr[6]; // T:1232321 


?> 

输出:

First Name :Marko 
Middle Name :Petronijevic 
Address :asdasBeograd,12321 
Phone :1232321 

工作演示:https://eval.in/823533