2017-05-08 3 views
1

を使用して、内側のdiv属性のリンクを取得します。私はのdivクラス= 'viewBuy'内部からのonclick atribute値を取得しようとしています私はHTML、次のしているDOM文書とXPath PHP

<div id="unique_id" style="display: none;"> 
    <div> 
    <div> 
     <div> 
      <div class="viewLink"> 
       <div class="viewBuy" onclick="javascript:window.location='https://google.com';return false;">View/Buy</div> 
      </div> 
     </div> 
    </div> 
</div>  

をdiv id = 'unique_id'、空の結果が得られました。どんな助けもありがとう。ここで

$dataObj = new DOMDocument(); 
$internalErrors = libxml_use_internal_errors(true); 
$dataObj->loadHtml($HTML); 

$idName = 'unique_id'; 
$xpath = new DOMXPath($dataObj); 
$viewAllLink = $xpath->query("//*[@id='$idName')]"); 

if ($viewAllLink) { 
foreach ($viewAllLink as $feeditem) { 
     $urlAttribute = $feeditem->getAttribute('onclick'); 
     if ($urlAttribute) break; 
    } 
} 

答えて

1

我々は、属性値を取得するためDOMDocumentDOMXPathを使用しています。

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$string='<div id="unique_id" style="display: none;"> 
    <div> 
    <div> 
     <div> 
      <div class="viewLink"> 
       <div class="viewBuy" onclick="javascript:window.location=\'https://google.com\';return false;">View/Buy</div> 
      </div> 
     </div> 
    </div> 
</div> 
</div>'; 
$output=null; 

$domdocument= new DOMDocument(); 
$domdocument->loadXML($string); 

$domXpath= new DOMXPath($domdocument); 
$result=$domXpath->query('//div[@id="unique_id"]'); 

$domXpath= new DOMXPath($domdocument); 
$result=$domXpath->query('//div[@class="viewBuy"]',$result->item(0)); 
echo $output =$result->item(0)->getAttribute("onclick"); 

出力: javascript:window.location='https://google.com';return false;

+0

おかげで、私の問題は、私は**のdivクラス= "viewBuy" **で多くのdivをしましたです。だから私は最初にidでそれをフィルタリングしなければならない。 – Ravistm

+0

@Ravistmよろしくお願いします。私もそれをお手伝いします... –

+0

@Ravistm私は自分の投稿を更新しました。今すぐ確認できます。 –

0

@Sahil、複数回答を与えてくれてありがとう。私はちょうどあなたが私に与えた他の2つの回答を掲示したい、それは誰かのために有用かもしれない。

ソリューション1

$dataObj = new DOMDocument(); 
$internalErrors = libxml_use_internal_errors(true); 
$dataObj->loadHtml($HTML); 

$idName = 'unique_id'; 
$xpath = new DOMXPath($dataObj); 
$viewAllLink = $xpath->query("//div[@id='$idName']/div/div/div/div/div[@class='viewBuy']")->item(0)->getAttribute("onclick"); 

対処方法2答えを

$dataObj = new DOMDocument(); 
$internalErrors = libxml_use_internal_errors(true); 
$dataObj->loadHtml($HTML); 

$idName = 'unique_id'; 
$xpath = new DOMXPath($dataObj); 
$viewAllLink = $xpath->query("//div[@id='$idName')]/div"); 
getAttribute($viewAllLink); 
echo $output; 

function getAttribute($result) 
{ 
    global $domdocument,$output; 
    if($result->length==1 && empty($result->item(0)->getAttribute("onclick"))) 
    { 
     $domXpath= new DOMXPath($domdocument); 
      $result=$domXpath->query('//div[@class="viewBuy"]',$result->item(0)); 
     getAttribute($result); 
    } 
    else 
    { 
     $output = $result->item(0)->getAttribute("onclick"); 
    } 
} 
関連する問題