2012-03-24 8 views
1

ウェブサイトから特定のリンクを抽出したい。PHP:preg_match_all()との具体的なリンクを取得する

リンクは、そのようになります。

<a href="1494761,offer-mercedes-used.html"> 

リンクは常に同じです - 新しい名称(この場合はメルセデス)を除いて。

これは、これまで正常に動作しますが、リンクだけの最初の部分提供:

preg_match_all('/((\d{7}),offer-)/s',$inhalt,$results);

をし、これが全体のウェブサイトとの最初のリンクを提供:(

preg_match_all('/((\d{7}).*html)/s',$inhalt,$results);

どれでも私はpreg_match()ではなくpreg_match()を使用しています。

おかげで、 チャマ

答えて

1

.*?が何だろうが(=あまり貪欲)、両方のケースでは、あなたがより正確なパターンを指定する必要があります。

ここでは[\w.-]+となります。しかし、[^">]+は、HTMLソースが一貫している(または他のバリエーションを特に無視したい場合)可能性があります。一般的に正規表現を使用したXML/HTMLを解析しようとすると

preg_match_all('/((\d{7}),offer-[\w.-])/s',$inhalt,$results); 
1

は良いアイデアではありませんが、あなたはそれが常にうまくフォーマットされます確信している場合、これはコンテンツ内のリンクを返す必要があります。

/<a href="([^">]+)">/ 

これは、より密接にあなたが

/<a href="([0-9]{7},offer-[a-z]+-used\.html)">/ 
// [7 numbers],offer-[at least one letter]-used.html 
を持っているかもしれないもののバリエーション必ず与えた例のみパターンと一致しませんが、
関連する問題