-1

私はこれを理解するために午前中ずっと過ごしてきましたが、何も機能していません。

基本的に私がやろうとしているのは、ウェブサイトを取得し、そのページから特に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]);

私がドキュメントで一致させようとしているのは

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

上記のスクリプトからMEMBERNAMEを引き出す必要があります。URLはページのほぼ一番下にあるので、なぜそれが正しく機能しないのか疑問に思っています。

どんな助けでも大歓迎です。

4

1 に答える 1

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"。

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

この正規表現テストツールを使用すると、Regexがどのように機能するかを理解し、学ぶことができます。

于 2012-04-16T16:31:05.527 に答える