如何将列表数据转换为php中的表

时间:2011-03-01 13:50:06

标签: php wordpress html-parsing

我正在使用wordpress创建一个曲棍球网站。我有一个自定义菜单的曲棍球运动员和我使用wp_nav_menu获取这样的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>

在将此回显到页面之前,我想将其分解为一个数组并将其放回一个表中,以便每列都很好地排列。我还需要用图形替换[USA]部分,一旦我将列表放入数组中就很容易做到。

解析这种类型的html的最佳方法是什么?我可以在WP中使用不同的功能吗?

3 个答案:

答案 0 :(得分:2)

<?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
        )

)

答案 1 :(得分:0)

如果你正在dmcnelis建议的其他网站上搜索,你可以在'['''字符上使用PHP's Dom getElementByIdexploding的组合,同时剥离'['。

答案 2 :(得分:0)

你可以用

爆炸
'<li>'

和strip_tags()获取行(忽略第一行),然后遍历它们并使用

进行爆炸
'] [' 

获得cols。