2012-03-13 10 views
0

私はxpathを使って、ある要素のいくつかのリンク(a)のテキスト値を取得しています。結果を$ tableauという配列にプッシュします。すべてがうまくいっている:)事は、私は今もそれらのリンクのhrefを取得したいと思います。だから私の配列のテキスト値とhrefの両方を持っている。もう一つは、私はそれをどうやって行うのか分かりません。誰かが助けることを願っています。あなたの返信を先にありがとう。乾杯。マルク・XPATH - 複数のパスの使い方

$url = 'http://www.somesite.com'; 
$path = '.../a'; 
$tableau = array(); 

$dom = new DOMDocument(); 
@$dom->loadHTML($url); 
$xpath = new DomXPath($dom); 
$x = $xpath->query($path); 

foreach ($x as $value) 
    array_push($tableau, $value->nodeValue); 

答えて

0

javramとvireshadのヒントのおかげで私は解決策を見つけることができました。以下を参照してください。

$url = 'http://www.somesite.com'; 
$path = '.../a'; 
$tableau = array(); 

$dom = new DOMDocument(); 
@$dom->loadHTML($url); 
$xpath = new DomXPath($dom); 
$x = $xpath->query($path); 

foreach ($x as $value) 
    array_push($tableau, array($value->nodeValue, $value->getAttribute('href'))); 
1

すべてのアンカータグのhrefを取得するためのXPath XPRESSIONが同等のPHPにこの式を変換し、この

("//a/@href"); 

    //  --> select a from all the descendants of the root 
    a  --> select the anchor tag 
    @href --> select the href of this anchor (@ to select attributes) 

のようなものである連想配列

the code might look like this(not sure abt the syntax though) 
arr = [ "1" => [ "text" => "value1" , "href" => "value1"], 
     "2" => [ "text" => "value2", "href" => "value2"]]; 

を使用することができますコード

+0

Hello vireshas私はhrefを取得する方法を知っています...事は私のテキスト値(a)とhref(@ href)の両方を私の配列にプッシュしたいと思います。そして、私は両方の方法を分かっていません... – Marc

+0

あなたは連想配列を使用する必要がありますが、私は構文についてはわかりませんが、これは["text" = "value"、 "href" = "value"] ..あなたはハッシュを使ってみることもできます – vireshas

+0

連想配列を使うという考えは、それが何であるかを調査しました。記事を読んで、私は多次元配列が解決策であるかもしれないことを知りました。私はそれを確認するための時間が必要です...ありがとうvireshas :) – Marc

1

試用:

foreach ($x as $value) 
{ 
    array_push($tableau, $value->nodeValue, $value->getAttribute('href')); 
} 
+0

こんにちはjavram。助けてくれてありがとう。私はhrefを取得する方法を知っています...私の問題は、テキスト値(a)とhref(@href)の両方を(同時に)配列にプッシュする方法がわかりません – Marc

+0

配列には配列のすべてのインデックスで単一の文字列。配列の各インデックスに複数の値を格納する場合は、複合型をサポートする配列が必要です。あるいは、nodeValueとhrefをデリミタで連結し、配列の単一の位置に格納することもできます。 – javram

+0

vireshasヒントに基づいて、私は多次元配列が解決策であるかもしれないことを発見しました。私が言ったように、私はそれをテストする時間が必要です...もう一度私を助けるために時間を取るように感謝します。 – Marc