如何在php中将列表数据转换为表
我正在用wordpress创建一个曲棍球网站。我有一个曲棍球运动员的自定义菜单,我使用wp_nav_菜单获得如下html:如何在php中将列表数据转换为表,php,wordpress,html-parsing,Php,Wordpress,Html Parsing,我正在用wordpress创建一个曲棍球网站。我有一个曲棍球运动员的自定义菜单,我使用wp_nav_菜单获得如下html: <ul id="example-menu"> <li><a href="/example/">[3] [DeBlois] [USA] [20 yr] [5’11] [185 lbs]</a></li> <li><a href="/example/">[35] [Baldino] [USA]
<ul id="example-menu">
<li><a href="/example/">[3] [DeBlois] [USA] [20 yr] [5’11] [185 lbs]</a></li>
<li><a href="/example/">[35] [Baldino] [USA] [20 yr] [5’11] [185 lbs]</a></li>
<li><a href="/example/">[2] [Esch] [USA] [20 yr] [5’11] [185 lbs]</a></li>
</ul>
在将其回传到页面上之前,我想将其分解为一个数组,并将其重新组合到一个表中,这样每一列都能很好地排列起来。我还需要用图形替换[USA]部分,一旦我将列表放入数组中,这将很容易完成
通过这种类型的html解析的最佳方式是什么?我可以在WP中使用不同的功能吗?如果你按照dmcnelis的建议从另一个网站上进行抓取,你可以考虑在剥离“[”时使用和的组合,然后在“]”字符上使用。你可以使用
'<li>'
'] ['
获取COL。它从哪里返回?或者你正在抓取另一个网站?理想情况下,你应该在返回HTML之前构建数组。对不起,我之前应该这么说。我正在使用wordpress在网站上创建自定义菜单。他们想要更多关于链接的技术信息,而不是我可以通过界面轻松创建的信息,而我仍然需要降低客户端以管理更新…因此,在我的菜单项标题中,我添加了[]的想法,使其更易于操作。我也没有看到从wp_nav_menu()获取原始菜单项的函数;我不明白。您不想要[]删除。如果是这样,请删除我进行str_替换的行。我不理解您所说的更多技术信息是什么意思
<?php
$html = '<ul id="example-menu">
<li><a href="/example/">[3] [DeBlois] [USA] [20 yr] [5’11] [185 lbs]</a></li>
<li><a href="/example/">[35] [Baldino] [USA] [20 yr] [5’11] [185 lbs]</a></li>
<li><a href="/example/">[2] [Esch] [USA] [20 yr] [5’11] [185 lbs]</a></li>
</ul>';
$doc = new DOMDocument();
@$doc->loadHTMl( $html);
$link_array = $doc->getElementsByTagName('a');
$result = array();
foreach($link_array as $element )
{
$value = $element->nodeValue;
$value = str_replace('[','',$value);
$value = str_replace(']','',$value);
$row = explode(" ",$value);
$result[] = $row;
unset($row);
}
echo "<pre>";
print_r($result);
echo "</pre>";
?>
Array
(
[0] => Array
(
[0] => 3
[1] => DeBlois
[2] => USA
[3] => 20
[4] => yr
[5] => 5’11
[6] => 185
[7] => lbs
)
[1] => Array
(
[0] => 35
[1] => Baldino
[2] => USA
[3] => 20
[4] => yr
[5] => 5’11
[6] => 185
[7] => lbs
)
[2] => Array
(
[0] => 2
[1] => Esch
[2] => USA
[3] => 20
[4] => yr
[5] => 5’11
[6] => 185
[7] => lbs
)
)