Comment analyser CDATA HTML contenu de XML avec SimpleXML?
J'essaie d'afficher le contenu Xml dans des tables, tout fonctionne parfaitement, mais un peu de contenu dans la balise que je ne veux pas d'affichage, je veux seulement l'image mais pas
novembre 2012 calendrier à partir de 5.10 Le Test
comme en xml,
<content:encoded><![CDATA[<p>November 2012 calendar from 5.10 The Test</p>
<p><a class="shutterset_" href='http://trance-gemini.com/wordpress/wp-content/gallery/calendars/laura-bertram-trance-gemini-145-1080.jpg' title='<br>November 2012 calendar from 5.10 The Test<br> <a href="</a></p>]]>
</content:encoded>
Je veux afficher l'image mais pas
novembre 2012 calendrier à partir de 5.10 Le Test
.
<?php
//load SimpleXML
$item = new SimpleXMLElement('test1.xml', null, true);
echo <<<EOF
<table border="1px">
<tr cl>
</tr>
EOF;
foreach($item->channel->item as $boo) //loop through our books
{
echo <<<EOF
<tr>
<td rowspan="3">{$boo->children('content', true)->encoded}</td>
<td>{$boo->title}</td>
</tr>
<tr>
<td>{$boo->description}</td>
</tr>
<tr>
<td>{boo->comments}</td>
</tr>
EOF;
}
echo '</table>';
?>
"contenu dans thi balise que j'ai dant eanto d'affichage" ??? Un peu plus d'effort dans l'écriture une bonne question serait de les aider.
oui je l'ai mise à jour mon, qc
double possible de PHP DOMDocument obtenir de l'Attribut de la Balise - vous ne pourriez pas comprendre pourquoi je suggère que ce double, voir ma réponse ci-dessous: stackoverflow.com/a/15850774/367456
Un autre double possible: Comment obtenir un attribut avec SimpleXML?
Votre question elle-même m'a donné une solution à l'aide de la référence appropriée pour le <content:encoded> champ. Merci.
oui je l'ai mise à jour mon, qc
double possible de PHP DOMDocument obtenir de l'Attribut de la Balise - vous ne pourriez pas comprendre pourquoi je suggère que ce double, voir ma réponse ci-dessous: stackoverflow.com/a/15850774/367456
Un autre double possible: Comment obtenir un attribut avec SimpleXML?
Votre question elle-même m'a donné une solution à l'aide de la référence appropriée pour le <content:encoded> champ. Merci.
OriginalL'auteur user2249819 | 2013-04-06
Vous devez vous connecter pour publier un commentaire.
Une fois, j'ai répondu, mais je ne trouve pas la réponse.
Si vous jetez un oeil à la chaîne (simplifié/embelli):
Vous pouvez voir que vous avez HTML codé à l'intérieur de le nœud de la valeur de la
<content:encoded>
élément. Alors d'abord vous avez besoin pour obtenir le code HTML de valeur, que vous faites déjà:Alors vous avez besoin pour analyser le code HTML à l'intérieur de
$html
. Avec des bibliothèques d'analyse HTML peut être fait avec PHP est indiqué dans:Si vous décidez d'utiliser plus ou moins recommandé
DOMDocument
pour le travail, vous avez seulement besoin d'obtenir la valeur de l'attribut de l'élément:Ou pour sa sœur bibliothèque SimpleXML vous utilisez déjà (ce n'est plus recommandé, voir la section suivante):
Vous utilisez SimpleXML. DOMDocument est une belle-sœur de la bibliothèque, ce qui signifie que vous pouvez les échanges entre les deux, donc vous n'avez pas besoin d'apprendre une nouvelle bibliothèque.
Par exemple, vous pouvez utiliser seulement à la fonctionnalité d'analyse HTML de
DOMDocument
, mais l'importer ensuite dansSimpleXML
. C'est utile, parce que SimpleXML ne supporte pas le HTML de l'analyse.Qui fonctionne via
simplexml_import_dom()
.Simplifié de l'étape-par-étape exemple:
Maintenant, vous pouvez utiliser
$html
comme un nouveau SimpleXMLElement qui représente le document HTML. Comme le HTML, les morceaux n'ont pas tout<body>
balises, conformément à la spécification HTML, ils sont mis à l'intérieur de la<body>
tag. Cela vous permettra par exemple d'accéder à lahref
attribut de la première<a>
à l'intérieur de la deuxième<p>
élément dans votre exemple:#Ici la pleine vue de dessus (Démo En Ligne):
Et ce qu'il produit:
(string)
moulé dans$htmlString = (string)$boo ...
et$href = (string)$html ...
. Je trouve le mental généraux de, en ajoutant toujours quand elle n'est pas nécessaire est inférieure à la surcharge de débogage de ces cas où il a été nécessaire, mais vous n'avez pas conscience.Vous n'avez jamais besoin de quelque chose appelé contexte de chaîne en PHP. Il est bon de savoir à ce sujet, même en dehors de SimpleXML seul. E. g. avec
echo
c'est toujours pas nécessaire.c'est du travail quand je le lance sur le fichier html,mais ce code, je l'ai appliqué dans mon fichier php, j'obtiens l'erreur-> notice: Undefined variable: htmlString dans E:\Work Space\xampp\htdocs\Xml-Paser\note1.php sur la ligne 20 notice: Undefined variable: htmlParser dans E:\WorkSpace\xampp\htdocs\Xml-Paser\note1.php sur la ligne 30
Oui, vous pouvez m'engager pour que.
merci sir de son travail.
OriginalL'auteur hakre
vous devez analyser l'url de l'image par exemple via
preg_match
et cette regex'(http://(?:[^']*))'
OriginalL'auteur Valerij