如何解析PHP页面中的文本

时间:2011-05-04 00:39:30

标签: php arrays parsing wiki

您好我有一个网页,它返回了一个wiki链接的一部分,我想从中解析出某些元素。页面代码如下 -

Array
(
    [parse] => Array
        (
            [text] => Array
                (
                    [*] => <div class="dablink">This article is about sports known as football.  For the ball used in these sports, see <a href="/wiki/Football_(ball)" title="Football (ball)">Football (ball)</a>.</div> 
<div class="thumb tright"> 
<div class="thumbinner" style="width:227px;"><a href="/wiki/File:Football4.png" class="image"><img alt="" src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Football4.png/225px-Football4.png" width="225" height="274" class="thumbimage" /></a> 
<div class="thumbcaption"> 
<div class="magnify"><a href="/wiki/File:Football4.png" class="internal" title="Enlarge"><img src="http://bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div> 
Some of the many different games known as football. From top left to bottom right: <a href="/wiki/Association_football" title="Association football">Association football</a> or soccer, <a href="/wiki/Australian_rules_football" title="Australian rules football">Australian rules football</a>, <a href="/wiki/International_rules_football" title="International rules football">International rules football</a>, <a href="/wiki/Rugby_Union" title="Rugby Union" class="mw-redirect">Rugby Union</a>, <a href="/wiki/Rugby_League" title="Rugby League" class="mw-redirect">Rugby League</a>, and <a href="/wiki/American_Football" title="American Football" class="mw-redirect">American Football</a>.</div> 
</div> 
</div> 
<p>The game of <b>football</b> is any of several similar <a href="/wiki/Team_sport" title="Team sport">team sports</a>, of similar origins which involve advancing a ball into a goal area in an attempt to score. Many of these involve <a href="/wiki/Kick_(football)" title="Kick (football)">kicking</a> a ball with the foot to score a <a href="/wiki/Goal_(sport)" title="Goal (sport)">goal</a>, though not all codes of football using kicking as a primary means of advancing the ball or scoring. The most popular of these sports worldwide is <a href="/wiki/Association_football" title="Association football">association football</a>, more commonly known as just "football" or "soccer". Unqualified, the word <i><a href="/wiki/Football_(word)" title="Football (word)">football</a></i> applies to whichever form of football is the most popular in the regional context in which the word appears, including <a href="/wiki/American_football" title="American football">American football</a>, <a href="/wiki/Australian_rules_football" title="Australian rules football">Australian rules football</a>, <a href="/wiki/Canadian_football" title="Canadian football">Canadian football</a>, <a href="/wiki/Gaelic_football" title="Gaelic football">Gaelic football</a>, <a href="/wiki/Rugby_league" title="Rugby league">rugby league</a>, <a href="/wiki/Rugby_union" title="Rugby union">rugby union</a> and other related games. These variations are known as "codes".</p> 
<div class="toclimit-3"></div> 

页面的信息在php数组中。我将如何解析位于数组的段落标记中的信息。香港专业教育学院尝试过简单的HTML dom解析器,这段代码没有运气

 if(preg_match_all("~<p>([\s\S]*?)</p>~i", $arr['parse']['text']['*'], $matches)){
  print_r($matches[1]);  //   <--- this will contain all matches found within <p> ... </p>
}

任何帮助都会非常感激,我完全难过!

DIM3NSION

1 个答案:

答案 0 :(得分:1)

使用DOM有什么问题?

我能看到的唯一问题是缺少根元素。

尝试这样的事情

$doc = new DOMDocument;
$doc->loadXML('<root>' . $arr['parse']['text']['*'] . '</root>');
$paragraphs = $doc->getElementsByTagName('p');

您可以尝试使用SimpleXML。