我是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
答案 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循环时,它更容易调整。