Как разобрать текст со страницы PHP - PullRequest
1 голос
/ 04 мая 2011

Привет, у меня есть веб-страница, которая возвращает часть вики-ссылки, и я хочу проанализировать некоторые элементы из нее.код страницы выглядит следующим образом -

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 parser, и этот код не повезло

 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 Ответ

1 голос
/ 04 мая 2011

В чем проблема с использованием DOM?

Единственная проблема, которую я вижу, это отсутствие корневого элемента.

Попробуйте что-то вроде этого

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

Вы можете попробовать то же самое с SimpleXML.

...