0

dom ドキュメントを使用してサイトをスキャン@srcし、内部img要素から属性を受け取ります。

htmlは次のとおりです。

  <div class="content">
    <div class="post">
      <img src="abc"/>
    </div>
    <div class="post">
      <img src="abc1"/>
    </div>
    <div class="post">
    </div>
  </div>

注:私は具体的には使用@srcしていませんxpath。また、これはまさに私がコーディングする必要がある方法です。

これが私のphpです:

$document = new DOMDocument();
$document->loadXML($file);
$XPath = new DOMXPath($document);
$Query = '//div[@class="content"]//div[@class="post"]';

$posts = $XPath->query($Query);

foreach ($posts as $post) {
    if($XPath->evaluate("@src", $post))
    {
        $return[] = $XPath->evaluate("@src", $post)->item(0);
    }else{
        $return[] =  "";
    }
}

配列に位置を追加して$returnいますが、それらはすべて空の配列位置です。

私の質問は、php コードからデータを出力する方法です。

$return[] = $XPath->evaluate("@src", $post)->item(0); 

これは機能しません:

$return[] = $XPath->evaluate("@src", $post)->item(0)->nodeValue; 
4

1 に答える 1

1

.//@src[1]:

  • . => ノードに相対的
  • //@ =>子孫
  • @src=> src 属性
  • [1] =>最初のもの。

string(nodeset)値のみを気にする場合でも使用できます (もちろん、属性を操作して->item(0)ソリューションを使用できるようにする必要がある場合は、それを除外してください)。

foreach ($posts as $post){
    $return[] = $XPath->evaluate("string(.//@src[1])",$post);
}
于 2013-10-15T19:07:44.960 に答える