2013-04-30 20 views
13

Ben DomCrawler bileşenini kullanıyorum ile eleman bul: http://symfony.com/doc/current/components/dom_crawler.htmlSymfony'nin DomCrawler: Belirli özellik değeri

Ben, ister sözdizimi gibi CSS kullanarak istiyorum, belirli bir özellik değerine sahip bir eleman olsun. Aşağıdaki getiriler 1 olarak,

$link = $crawler->filter('#product a[data-type="bla"]'); 

Bu iş gibi görünüyor:

İşte kullanıyorum kodu

echo count($link); 

Ancak, bundan daha ileri filtreleyemezsiniz asla. Yapamayacağım:

$link->filter('img')->attr('src'); 

Bu aşağıdaki hata iletisine neden olur:

The current node list is empty. 

Ancak, Kesin bildiğim o olmadığını.

Diğer öğelerdeki sözdizimini denedim ve her zaman aynı. Yanlış bir şey yapıyorum ya da bu mümkün değil (sözdizimi gibi css ile xpath değil)

+2

Yankı sayısı ($ link-> filter ('img')); '? 0 ise, sanırım bir çocuğunuzun çocuğu olarak bir img öğeniz yok. İşte geçerli düğüm listesi boş. ' –

cevap

22

Sorununuzu takip edemiyorum.

: iki yazılım kütüphaneleri dom-paletli ve css-selector, aşağıdaki örnek HTML dikkate gayet eserler sağlanan örnek kod mevcut gelişme versiyonlarını (ve ayrıca 2.1.0 ve 2.2.0 sürümleri) kullanarak
<?php 
use Symfony\Component\DomCrawler\Crawler; 

// require dependencies here  

$html = <<<'HTML' 
<!DOCTYPE html> 
<html> 
    <body> 
     <p class="message">Hello World!</p> 
     <p>Hello Crawler!</p> 
     <div id="product"> 
      <a data-type="bla"> 
       <img src="OK"> 
      </a> 
     </div> 
    </body> 
</html> 
HTML; 

$crawler = new Crawler($html); 

$link = $crawler->filter('#product a[data-type="bla"]'); 

echo var_dump(count($link)); 

var_dump($link->filter('img')->attr('src')); 

bu tam olarak kelimesi kelimesine şu çıktıyı verir (sadece biraz farklı ama aslında değildir) koddur görebileceğiniz gibi:

int(1) 
string(2) "OK" 

ilk çıkış hattı count() ve ikincisi src öznitelik değeridir.

Besteci güncelleştirmesi çalıştırdınız mı? Girişi iki kez kontrol ettiniz mi?

+0

Cevabınız için teşekkür ederiz. Özür dilemeliyim. Giriş gerçekten yanlıştı. Javascript ile dönüştürüldü ve artık basit bir bakış kaynağı yöntemine sahip olmayan ve verilerin yanlış varsayımlarına yol açan Safari ile kontrol ediyordum. – Wesley

+1

@Wesley: https://discussions.apple.com/thread/4325736?start=0&tstart=0 <- Geliştirici menüsünü etkinleştirdiniz mi? –

İlgili konular