1

次のようなデータを持つPHPで情報をスクレイピングしようとしています:

<br>1998 - <a href="http://example.com/movie/id/2345">A Night at the Roxburry<a/>

<br><a>タグの間にある年を取得する必要があります。PHP Simple DOM HTML パーサーを使用して、映画のタイトルを取得しました。これは、タイトルを解析するために使用したコードです

foreach($dom->getElementsByTagName('a') as $link){
    $title = $link->getAttribute('href');
}

私は使用してみました:

$string = '<br>1998 - <a href="http://example.com/movie/id/2345">A Night at the Roxburry<a/>';
$year = preg_match_all('/<br>(.*)<a>', $string);

<br>しかし、と<a>タグの間にある年は見つかりません。年を見つけるために何ができるか知っている人はいますか?

4

2 に答える 2

2

これを試して:

<?php
$subject = '<br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry<a/>';
$pattern = '/<br>[0-9]{4}/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>

年が他の形式で表示されている場合は、パターンを変更できることに注意してください。2 つのタグの間のすべてを表示したい場合は、使用できる$pattern = '/<br>.*<a/';か、他の適切なものを使用できます。

于 2013-03-17T06:02:20.317 に答える
1

使用している式:はと$year = preg_match_all('/<br>(.*)<a>', $string);の間のテキストを検索しますが、この例ではどこにもありません。との間のテキストを次のように探してみてください。<br><a><a><br><a

$year = preg_match_all ('/<br>([^<]*)<a/', $string);

次のタグで停止するように変更.したことに注意してください。それ以外の場合は、次のような文字列に一致します。[^<]

<br>foo<br><br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry<a

で始まり で<br>終わる<aからですが、これはおそらくあなたが必要としているものではありません.あなたの年は次のようになります:

foo<br><br>1998 - <a href="http://site.com/movie/id/2345">A Night at the Roxburry
于 2013-03-17T06:32:42.703 に答える