2012-04-16 38 views
-1

私はこれを理解しようとしている午前中に過ごしていますが、何も動作していません。PHP正規表現HTMLリンクを抽出

私がやっているのは基本的にウェブサイトをとり、の1つのリンク、特にをページから抽出することです。基本的にこのウェブサイトはフォーラムであり、ページの一番下に「最新のメンバーはMEMBERNAMEHEREです」というセクションがあります。メンバー名は、ユーザープロファイルにリンクされたリンクです。私はページからリンクを得ることができますが、それは私がページからすべてのリンクを取る正規表現を設定すると、それは遠くに行くように見えません。コードは、私が持っている:私は、ドキュメントに一致しようとしている何

$url = "[The forum's url goes here.]"; 
$input = file_get_contents($url) or die("Could not access file: $url"); 
$regexp = "The newest member is <a.*href=\"(.*?)\".*?\>(.*)\<\/a\>+/)"; 
preg_match_all("The newest member is /\<a.*href=\"(.*?)\".*?\>(.*)\<\/a\>+/)", $input, $match, PREG_SET_ORDER); 
echo($match[0][2]); 

は、私は上記のスクリプトのうち、MEMBERNAMEを引っ張っする必要が

The newest member is <a href="http://forumurl.com/profile/usernumber">MEMBERNAME</a>) 

です。 URLはページの一番下にあるので、なぜそれが適切に機能していないのかと思います。

ご協力いただきまして誠にありがとうございます。

+2

HTMLパーサーを使用している場合、気にする必要はありません。それはちょうどそれを行います。なぜあなたは車輪を再発明する必要がありますか? - そして実際にあなたが特定の '$ url 'を与えない限り、誰もそれがどのように行われるかを伝えることはできません。 – hakre

+0

あなたは 'error_reporting'を呼び出すことによって助けてくれてありがとうと思います。 – mario

+2

誰かがHTMLを正規表現で解析する方法を尋ねるたびに$ 1を受け取ったら、私は豊富になるはずです... – scibuff

答えて

1

コードではなく、次のようになります。

$url = "[The forum's url goes here.]"; 
$input = file_get_contents($url) or die("Could not access file: $url"); 
$regexp = "/The newest member is \<a.*href=\"(.*?)\".*?\>(.*)\<\/a\>\)/"; 
preg_match_all($regexp, $input, $match, PREG_SET_ORDER); 
echo($match[0][2]); 

は、これが成功したエコー: "MEMBERNAMEを"。

ただし、同じケースが複数存在しないように注意する必要があります。複数のフォーラムで同じことを行う場合は、一貫性があることを確認する必要があります。それ以外の場合は、正規表現関数の先頭または末尾にさらに多くのコードを含めることができます。

これはRegular Expression Test Toolを使って手助けしたり、Regexの仕組みについてもっと知ることができます。

+0

まだ動作しません..ページに何も表示されません。 – John

+0

$配列を出力します。 – James

+0

まだ何も返されません。だから私はページ上のリンクの位置が問題を引き起こしているのだろうかと思っています。それはまったくリンクをピックアップしているようには見えません。編集:それは事実ではありません。正規表現テストツールで、その式を持つページソース全体が正常に動作します。 – John