2011-07-04 13 views
3

ブロック内に表示するリンクテキストを含むいくつかのページ内のすべてのリンクを抽出します。私は正規表現を試しましたが、タグが修正パターンを持っていないので、正しい結果を得られません、彼らは様々な属性を持っています。私はPHPを使用します。すべてを抽出<a>コンテンツからタグ

どうすればいいですか?

+2

あなたは** **このために正規表現を使用する必要はありません。 – ThiefMaster

答えて

8

DOMDocument::loadHTML

が好き:DOMとgetElementsByTagNameの()を使用しておよそ

$doc = new DOMDocument(); 
$doc->loadHTML($string); 
foreach($doc->getElementsByTagName('a') as $a) { 
    // do something with $a->textContent 
} 
+0

ありがとうございます。私のコードに追加してこのエラーが表示されます::致命的なエラー:DOMElementクラスのオブジェクトを文字列に変換できませんでした –

+0

loadHTML関数に渡すものは? $ stringはhtmlの内容である必要があります –

+0

html.the問題は私が$ a-> textContentではないecho $でした。 –

2

あなたはPHP:DOMDocument::getElementsByTagNameを使用して、指定されたタグを取得して試すことができます。 page.html内部

<a href="#">link1</a> 
<a href="#">link2</a> 
<a href="#">link3</a> 

、これはあなたのPHPコードは次のとおりです:ここでは一例である

<?php 

$src = new DOMDocument('1.0', 'utf-8'); 
$src->formatOutput = true; 
$src->preserveWhiteSpace = false; 
$src->load('page.html'); 

$links = $src->getElementsByTagName('a'); 
?> 
関連する問題