2017-06-28 48 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