2010-11-19 13 views
4

UPDATE 2: http://htmlpurifier.org/phorum/read.php?3,5088,5113 Yazar zaten sorunu tespit etti.htmlpurifier, üçüncü taraf kaynak onavantajı kaynağı

GÜNCELLEME: Sorun, sürüm 4.2.0'a özel olarak görünüyor. 4.1.0'a düşürdüm ve çalışıyor. Tüm yardımların için teşekkür ederim. Paketin yazarı bildirildi.

ben kazıma am bazı sayfalar gibi:

http://form.horseracing.betfair.com/horse-racing/010108/Catterick_Bridge-GB-Cat/1215

W3C doğrulama göre, geçerli XHTML Sıkı olduğunu.

Daha sonra bir DOMDocument öğesine yüklenmeden önce HTML'yi temizlemek için http://htmlpurifier.org/ kullanıyorum. Ancak, yalnızca tek bir içerik satırı döndürüyor.

Çıktı:

12:15 Catterick Bridge - Tuesday 1st January 2008 - Timeform | Betfair 

Kodu:

echo $content; # all good 
$purifier = new \HTMLPurifier(); 
$content = $purifier->purify($content); 
echo $content; # all bad 

BTW Sen bu etki alanından gelen tüm sayfalar için başlık bırakır dediğiniz gibi, başka bir siteden kaynaklı veriler için çalışmaktadır.

İlgili Bağlantılar

+4

Bize göstermediğinizden emin olun * hangi * satır! Tahmin etmenin tüm eğlencesini alırdı. –

+0

@Pekka, :) ekledi –

+0

Strange, başlık gibi görünüyor. Kullandığınız kodu gösterebilir misiniz? (Arıtma çağrısı ve ayarları) –

cevap

0

HTML temizleyici gerekmez. DOMDocument sınıfı sizin için her şeyi halledecektir.

$doc = new DOMDocument(); 
@$doc->loadHTML($content); 

Sonra hata tetiklenir olmayacak ve HTML ile istediğine yapabilirsiniz: Ancak, bu yüzden sadece bunu geçersiz html bir uyarı tetikler.

Bağlantıları kazııyorsanız, SimpleXMLElement :: xpath(); Bu DOMDocument ile çalışmaktan çok daha kolay. Bu konuda başka örnek:

$xml = new SimpleXMLElement($content); 
$result = $xml->xpath('a/@href'); 

print_r($result); 

Sen sınıf isimleri, kimlikleri ve diğer özelliklerini specifiy izin çok daha karmaşık XPath'leri alabilirsiniz. Bu DOMDocument'den çok daha güçlüdür.

+0

yeah ocd beni üçüncü bir şeyi arındırıyordu :) şimdi sadece saf domdocument ve domxpath kullanıyordum - ki bu da ihtiyaçlarım için mükemmel. aslında kendi kodumdaki bir hata, dom'a yüklenmeden önce beni saflaştırmaya götürdü (o zamandan beri çözüldü, ve bu şekilde de arındırmaya ihtiyacım var). –