UTF8 , decode, encode, special entities ???

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : UTF8 , decode, encode, special entities ???

par AVI3000 » 12 juil. 2007, 21:02

j'avais trop simplifié mon exemple
ce code fonctionne.
inputDoc = @DOMDocument::loadHTMLFile($goto);
echo utf8_decode(inputDoc->saveHTML()) ;
résultat (au milieu de bien d'autre chose):
L'Italien Filippo Pozzato (Liquigas) a remporté au sprint la cinquième étape du Tour de France


mais celui-ci non
inputDoc = @DOMDocument::loadHTMLFile($goto);
$xpath = new DOMXPath(inputDoc);
$outputDoc = new DOMDocument();

$aNode = $xpath->query('//div[@class="caletexte"]')->item(0) ;
if ( $aNode )    $outputDoc->appendChild(outputDoc->importNode($aNode, TRUE)) ;
echo utf8_decode($outputDoc->saveHTML());
résultat:
L'Italien Filippo Pozzato (Liquigas) a remporté au sprint la cinquième étape du Tour de France?>


celui-ci fonctionnerait presque correctement,
mais lourd le décodage élément par élément
et je perds les marque <b> </b>
.......
if ( $aNode )    $outputDoc->appendChild(outputDoc->importNode($aNode, TRUE)) ;

$xpath = new DOMXPath($outputDoc);
foreach ( $xpath->query('//p') as $e ) {
        $e->nodeValue = utf8_decode($e->nodeValue) ;
}
echo $outputDoc->saveHTML();
celui-ci fonctionne correctement, en étant relativement propre
$doc = @DOMDocument::loadHTMLFile("http://www.lequipe.fr/Rugby/20070713_103904Dev.html");
$meta = $doc->getElementsByTagName('meta')->item(0);
$meta->setAttribute("content", "text/html; charset=iso-8859-1") ;
$doc = @DOMDocument::loadHTML(utf8_decode($doc->saveHTML())) ; /* convertit la page d'origine */

/* on peut maintenant manipuler la page convertie */
$xpath = new DOMXPath($doc);
$doc2 = new DOMDocument;
$doc2->appendChild($doc2->importNode($xpath->query('//div[@class="caletexte"]')->item(0), TRUE)) ;

echo $doc2->saveHTML();
si vous avez mieux, n'hésitez pas

pour tester: Url=http://www.lequipe.fr/Rugby/20070712_191853Dev.html (par exemple)

Merci

par @rthur » 12 juil. 2007, 19:16

Bonjour,

utf8_decode() devrait suffire normalement... ;)

UTF8 , decode, encode, special entities ???

par AVI3000 » 12 juil. 2007, 18:31

Bonjour,
$doc = @DOMDocument::loadHTMLFile(url);
echo $doc->saveHTML();
Résultat:
L'Italien Filippo Pozzato (Liquigas) a remporté au sprint la cinquième étape du Tour de France entre Chablis et Autun, au terme d'une étape mouvementée. Il a devancé l'Espagnol Oscar Freire et son compatriote Daniele Bennati (Lampre). Le Suisse Fabien Cancellara (CSC) a conservé le maillot jaune de leader.

La page HTML d'origine contient ceci:

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
entre les decode, encode, special entities, ..... , que choisir :?: :?:

Merci