2010-11-19 19 views
4

MISE À JOUR 2: http://htmlpurifier.org/phorum/read.php?3,5088,5113 Auteur a déjà identifié le problème.htmlpurifier, surpurification de source tierce

MISE À JOUR: Le problème semble être exclusif à la version 4.2.0. J'ai rétrogradé à 4.1.0 et cela fonctionne. Je vous remercie pour votre aide. Auteur du paquet notifié.

Je racler quelques pages comme:

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

Selon validation W3C est valide XHTML Strict. J'utilise ensuite http://htmlpurifier.org/ pour purifier le HTML avant de le charger dans un DOMDocument. Cependant, il ne renvoie qu'une seule ligne de contenu.

Sortie:

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

code:

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

BTW cela fonctionne pour les données provenant d'un autre site, comme vous le dites quitte le titre pour toutes les pages de ce domaine.

Liens

+4

Assurez-vous de ne pas nous révéler * quelle * ligne! Cela enlèverait tout le plaisir de deviner. –

+0

@Pekka, :) ajouté –

+0

Étrange, cela semble être le titre. Pouvez-vous montrer le code que vous utilisez? (L'appel de purificateur et les paramètres) –

Répondre

0

Vous ne devriez pas avoir besoin du purificateur HTML. La classe DOMDocument s'occupera de tout pour vous. Cependant, il déclenchera un avertissement sur HTML invalide, faites juste ceci:

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

l'erreur ne sera pas déclenchée, et vous pouvez faire ce que vous voulez avec le code HTML.

Si vous êtes des liens de raclage, je vous recommande d'utiliser SimpleXMLElement :: xpath(); C'est beaucoup plus facile que de travailler avec le DOMDocument. Un autre exemple sur ce point:

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

print_r($result); 

Vous pouvez obtenir beaucoup plus complexe XPath qui vous permettent de spécifier les noms de classe, ids, et d'autres attributs. C'est beaucoup plus puissant que DOMDocument.

+0

ouais ocd m'avait moi-même purifier quelque chose de tiers :) Je suis maintenant en train d'utiliser pure domdocument et domxpath - qui est parfait pour mes besoins. en fait, un bug dans mon propre code m'a conduit à la purification avant de charger dans Dom (qui est résolu depuis, et en tant que tel est mon besoin de purifier). –