从文本创建菜单

时间:2011-03-08 10:50:20

标签: php

我是PHP编程的新手,不知道各种工作函数的确切语法,如split,find等。 我正在跟踪我的文字 在字符串变量

$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

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我建议你让你的字符串包含另一个像这样的分隔符:

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

然后,您可以使用explode方法将字符串拆分为关联数组。

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

答案 3 :(得分: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()s循环时,它更容易调整。