2011-03-08 79 views
0

我對PHP編程非常陌生,不知道各種實驗功能(如分割,查找等)的確切語法。 我有以下中的字符串變量與我 文本從文本創建菜單

$menu = '/home-page|HOME 
/our-iphone-app|OUR iPhone APP 
/join-us|JOIN ME 
/contact-us|CONTACT US'; 

我要填充與管道之前含有部本文一個陣列到陣列|第二個陣列包含管道後的部分。如何使用char(|)方法進行一些拆分。

最後陣列必須包含

$arraypage = {'0'->'/home-page','1'->'/our-iphone-app'} // etc, and... 
$arrayTitle = {'0'->'HOME','2'->'OUR iPhone App'} // etc 
+0

感謝查理編輯 – Abhi 2011-03-08 10:54:41

+0

你真的想''arrayTitle = {'0' - >'HOME','2' - >'我們的iPhone應用'}',而不是'$ arrayTitle = {'0' - > 'HOME','1' - >'我們的iPhone應用程序'}'? – 2011-03-08 10:58:11

+3

嗯。我個人建議你在聲明菜單時使用另一種語法。爲什麼要編寫一個過於複雜的字符串,將它解析爲數組,然後將頁面放在一起,當你也可以放在一起的多維數組,如:'$ menu = array(array(「home」,「/ link- home「),array(」聯繫我們「,」/ contact-us「));'然後直接訪問條目。不過,只是一個偏好問題。 – slhck 2011-03-08 11:01:31

回答

1

您需要通過新的生產線,打破了字符串,然後通過管道符。所產生的陣列

$lines = explode("\n", $menu); 
$arraypage = array(); 
$arrayTitle = array(); 

foreach($lines as $line) { 
    list($arraypage[], $arrayTitle[]) = explode('|', $line); 
} 

的var_dump給出:

array 
    0 => string '/home-page' (length=10) 
    1 => string '/our-iphone-app' (length=15) 
    2 => string '/join-us' (length=8) 
    3 => string '/contact-us' (length=11) 

array 
    0 => string 'HOME' (length=4) 
    1 => string 'OUR iPhone APP' (length=14) 
    2 => string 'JOIN ME' (length=7) 
    3 => string 'CONTACT US' (length=10) 
+0

感謝雅各布試圖在我的網站上運行此代碼 – Abhi 2011-03-08 10:58:34

1
$array = explode("\n", $array); 
$result1 = array(); 
$resutl2 = array(); 

foreach($array as $arr){ 
    $temp = explode('|', $arr); 
    $result1[] = $temp[0]; 
    $result2[] = $temp[1]; 
} 
1

我建議你讓你的字符串包含另一個分離器,像這樣:

$menu = '/home-page|HOME:/our-iphone-app|OUR iPhone APP:/join-us|JOIN ME:/contact-us|CONTACT US'; 

然後你就可以使用爆炸方法將您的字符串拆分爲關聯數組。

$array = explode(":", $menu); 
foreach($array as $key => $val) { 
    $array[$key] = explode("|", $val); 
} 
1

我可能只是定義數組中的數據開始,而不是字符串。我也建立它的格式

$menu_array = { 
    {'url'=>'/home-page','text'=>'HOME'}, 
    {'url'=>'/our-iphone-app','text'=>'OUR iPhone APP'}, 
    {'url'=>'/join-us','text'=>'JOIN ME'}, 
    {'url'=>'/contact-us','text'=>'CONTACT US'}, 
}; 

因爲這幾乎肯定會更有用,無論你下一步做什麼。

如果你確實需要使用字符串,但是我會說正則表達式是最簡單的方法。以下內容:

preg_match_all('/^(?P<url>[^|]+)\\|(?P<text>\\V+)\\v*$/m',$menu,$menu_array,PREG_SET_ORDER) 

會將$ menu_array設置爲我上面使用的格式。 公平地說,使用正則表達式可能有點矯枉過正,但我​​更喜歡正則表達式的強大功能,當您想要添加事物時比後面的explode()循環更容易調整。