Php 从文本创建菜单
我对PHP编程非常陌生,不知道各种标签函数的确切语法,比如,split,find,等等。 我有下面的文字 在字符串变量中Php 从文本创建菜单,php,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'-
$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
您需要按新行和管道字符来拆分字符串
$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)
您需要按新行和管道字符来拆分字符串
$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)
我建议您让字符串包含另一个分隔符,如下所示:
$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);
}
我建议您让字符串包含另一个分隔符,如下所示:
$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);
}
我可能会首先在数组中定义数据,而不是将其定义为字符串。我也会以这种格式构建它
$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)
preg\u match\u all('/^(?P[^ |]+)\\\\\\\\\\(?P\\V+\\V*$/m',$menu,$menu数组,preg\u设置顺序)
将$menu_数组设置为我上面使用的格式。
公平地说,使用正则表达式可能有点过火,但我更喜欢正则表达式的功能,它比explode()s的循环更容易在以后添加内容时进行调整。我可能只是从数组中定义数据开始,而不是作为字符串。我也会以这种格式构建它
$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)
preg\u match\u all('/^(?P[^ |]+)\\\\\\\\\\(?P\\V+\\V*$/m',$menu,$menu数组,preg\u设置顺序)
将$menu_数组设置为我上面使用的格式。
公平地说,使用正则表达式可能有点过火,但我更喜欢正则表达式的功能,当你想添加东西时,它比explode()的循环更容易调整。你真的想要
$arraytile={'0'->'HOME','2'->'OUR iPhone App'}
,而不是$arraytile={'0'->'HOME','1'>'OUR iPhone App}
?嗯。我个人建议您在声明菜单时使用另一种语法。为什么要编写一个过于复杂的字符串,将其分解为数组,然后将页面组合在一起,而您也可以组合一个多维数组,例如:$menu=array(array(“home”)、“/link to home”)、array(“contact-us”、“/contact-us”)
然后直接访问条目。不过这只是一个偏好问题。你真的想要$arraytile={'0'->'HOME','2'->'OUR iPhone App'}
,而不是$arraytile={'0'->'HOME','1'->'OUR iPhone App'}
?嗯。我个人建议你在声明菜单时使用另一种语法。为什么要编写一个过于复杂的字符串,将其分解为数组,然后将页面组合在一起,而您也可以组合一个多维数组,例如:$menu=array(array(“home”)、“/link to home”)、array(“contact-us”、“/contact-us”)
然后直接访问条目。不过,这只是偏好的问题。