nitse
Messages postés24Date d'inscriptionmardi 10 juin 2008StatutMembreDernière intervention25 septembre 2014
-
24 juin 2014 à 17:57
nitse
Messages postés24Date d'inscriptionmardi 10 juin 2008StatutMembreDernière intervention25 septembre 2014
-
27 juin 2014 à 17:52
Bonjour, je rencontre un petit souci qui me dépasse dans la programmation, je précise que je débute alors comprenez mes lacunes.
J'ai effectué plusieurs recherches à ce propos, malheureusement je comprends pas comment appliquer, dans aucun forum il ne précise comment le faire du moins à ce que j'ai visité, tout le monde leur passe un bout de code sans expliquer le fonctionnement de celui-ci et à quoi il sert et ce qui faut faire pour appliquer. Dans mon cas ici présent, j'ai ce petit code là :
Je souhaite récuperer sur ma page *Feed le contenu de la balise : content:encoded avec les images y comprises.
Alors j'ai tenté plusieurs fois d'inclure les codes que j'ai repris sur divers forums mais cela ne marche pas, c'est là que j'ai besoin de votre aide, de m'expliquer de façon plus adéquate et précise pour que je comprenne la logique, c'est important pour moi.
rappelez-vous que je suis un novice mais perfectible dans le domaine.
Merci d'avance de vos réponses.
jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024345 Modifié par jordane45 le 27/06/2014 à 01:43
Bon...
Je me suis décidé à faire des tests....
Voilou :
<?php
//************************************************************************
function XMLToArray($xml)
{
if ($xml instanceof SimpleXMLElement) {
$children = $xml->children();
$return = null;
}
foreach ($children as $element => $value) {
if ($value instanceof SimpleXMLElement) {
$values = (array)$value->children();
if (count($values) > 0) {
$return[$element] = XMLToArray($value);
} else {
if (!isset($return[$element])) {
$return[$element] = (string)$value;
} else {
if (!is_array($return[$element])) {
$return[$element] = array($return[$element], (string)$value);
} else {
$return[$element][] = (string)$value;
}
}
}
}
}
if (is_array($return)) {
return $return;
} else {
return $false;
}
}
//************************************************************************
$html = "";
$url = "http://dublanc225.wordpress.com/feed/";
$xml = utf8_encode(simplexml_load_file($url));
// On stocke le contenu des ITEM dans un array
foreach ($xml->channel->item as $item){
$arrItems[] = XMLToArray($item);
}
// Pour les tests :
// Contenu des ITEM
var_dump($arrItems);
// Utilisation du tableau des ITEM
// -> Tu peux aussi le faire directement dans la boucle FOREACH précédente...
foreach ($arrItems as $item => $subitem){
if (is_array($subitem)){
foreach ($subitem as $key=>$valeur){
echo "<br> item : ".$item. " => Key : ".$key . " Valeur : " .$valeur ;
}
}else{
echo "<br> item : ".$item ." subitem : ".$subitem;
}
}
Voilou...
Maintenant .. il ne te reste plus qu'à manipuler le tableau pour en récupérer les données qui t'intéressent...
Je pense que toi ce que tu veux c'est 'Description'
Avant de poser une question, merci de lire la charte du site. Cordialement, Jordane
jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024345 25 juin 2014 à 14:53
Je ne comprend pas bien...
Le echo $html ... semble bien contenir ce que tu souhaites avoir .. non ???
Quand je regarde ton XML....
Dans le premier ITEM par exemple on a bien :
[item] => Array ( [0] => SimpleXMLElement Object ( [title] => Fouilles et contrôles d'identité : nos droits et devoirs [link] => http://dublanc225.wordpress.com/2014/06/24/fouilles-et-controles-didentite-nos-droits-et-devoirs/ [comments] => http://dublanc225.wordpress.com/2014/06/24/fouilles-et-controles-didentite-nos-droits-et-devoirs/#comments [pubDate] => Tue, 24 Jun 2014 09:37:18 +0000
... Et c'est bien ce qui s'affiche dans ta page ....
Ce qui me surprend c'est, lors de la récupération du XML, que ton noeud :[description] Ne contienne que => SimpleXMLElement Object ( )
Il faudrait, je pense, nous fournir un exemple du XML que tu utilises (le code source du xml..)...
Jusqu'à la tout va bien, j'ai les brefs descriptions des articles.
Mais je souhaite maintenant récupérer l'article en entier et non en breffs description. j'ai tenté de recupérer la balise Content:encoded sur http://dublanc225.wordpress.com/feed/ mais rien ne se passe ....
The LIBXML_NOCDATA is optional third parameter of simplexml_load_file() function. This returns the XML object with all the CDATA data converted into strings.
$xml = simplexml_load_file($url,LIBXML_NOCDATA);
Après... pour ce qui est de la "balise" à utiliser... je ne sais pas si tu dois mettre :
Merci, je pense que vous m'aiguiller sur la bonne voie, mais j'ai des erreurs :
Warning: simplexml_load_file() expects parameter 2 to be a class name derived from SimpleXMLElement, '16384' given in C:\wamp\www\site\testfeed.php on line 19 Call Stack # Time Memory Function Location 1 0.0002 250288 {main}( ) ..\testfeed.php:0 2 0.0004 252008 simplexml_load_file ( ) ..\testfeed.php:19
jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024345 Modifié par jordane45 le 25/06/2014 à 16:17
Avec simplexml_load_file ( idem avec le load_string ).. l'argument est en troisième position.. désolé.
nitse
Messages postés24Date d'inscriptionmardi 10 juin 2008StatutMembreDernière intervention25 septembre 2014 25 juin 2014 à 16:25
Merci, la j'ai plus aucune erreur avec les 2 méthodes que tu m'as donné.
En revanche maintenant, rien ne s'affiche sur la page, alors je cherche à voir si c'est pas un soucis de ce coté la pour l'affichage:
$content = $xml->channel->item[$i]->content;
$html .="$content";
En tout cas merci puis si je trouve pas la solution bah tant pis j'aurai essayé, c'était surtout pour éviter de crée un panel admin afin de pouvoir publié des articles sur mon site.
jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024345 25 juin 2014 à 16:30
TU peux réafficher ce que donne le var_dump ( ou le print_r) de ton $xml ?
Maintenant que tu as utilisé le nocdata dans le paramètre... on devrait voir le nom de la balise à utiliser...
content ou content:encoded...
Et puis... pourquoi mets tu ta variable entre QUOTES ?
Et puis... pourquoi mets tu ta variable entre QUOTES ?
Mdr, tu es curieux, j'ai toujours fait comme ça en faite je travail beaucoup sur les Flux rss, puis j'ai appris la programmation sur le tas du coup j'ai peut être pris de mauvaises habitudes... non ??
breff, voilà ce que donne le print_r :
object(SimpleXMLElement)[1] public '@attributes' => array (size=1) 'version' => string '2.0' (length=3) public 'channel' => object(SimpleXMLElement)[2] public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'description' => string 'parler d'ici en venant d'ailleurs' (length=33) public 'lastBuildDate' => string 'Tue, 24 Jun 2014 14:37:39 +0000' (length=31) public 'language' => string 'fr' (length=2) public 'generator' => string 'http://wordpress.com/' (length=21) public 'cloud' => object(SimpleXMLElement)[3] public '@attributes' => array (size=5) ... public 'image' => object(SimpleXMLElement)[4] public 'url' => string 'http://s2.wp.com/i/buttonw-com.png' (length=34) public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'item' => array (size=5) 0 => object(SimpleXMLElement)[5] ... 1 => object(SimpleXMLElement)[6] ... 2 => object(SimpleXMLElement)[7] ... 3 => object(SimpleXMLElement)[8] ... 4 => object(SimpleXMLElement)[9] ... object(SimpleXMLElement)[1] public '@attributes' => array (size=1) 'version' => string '2.0' (length=3) public 'channel' => object(SimpleXMLElement)[2] public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'description' => string 'parler d'ici en venant d'ailleurs' (length=33) public 'lastBuildDate' => string 'Tue, 24 Jun 2014 14:37:39 +0000' (length=31) public 'language' => string 'fr' (length=2) public 'generator' => string 'http://wordpress.com/' (length=21) public 'cloud' => object(SimpleXMLElement)[9] public '@attributes' => array (size=5) ... public 'image' => object(SimpleXMLElement)[8] public 'url' => string 'http://s2.wp.com/i/buttonw-com.png' (length=34) public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'item' => array (size=5) 0 => object(SimpleXMLElement)[7] ... 1 => object(SimpleXMLElement)[6] ... 2 => object(SimpleXMLElement)[5] ... 3 => object(SimpleXMLElement)[4] ... 4 => object(SimpleXMLElement)[3] ... object(SimpleXMLElement)[1] public '@attributes' => array (size=1) 'version' => string '2.0' (length=3) public 'channel' => object(SimpleXMLElement)[2] public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'description' => string 'parler d'ici en venant d'ailleurs' (length=33) public 'lastBuildDate' => string 'Tue, 24 Jun 2014 14:37:39 +0000' (length=31) public 'language' => string 'fr' (length=2) public 'generator' => string 'http://wordpress.com/' (length=21) public 'cloud' => object(SimpleXMLElement)[3] public '@attributes' => array (size=5) ... public 'image' => object(SimpleXMLElement)[4] public 'url' => string 'http://s2.wp.com/i/buttonw-com.png' (length=34) public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'item' => array (size=5) 0 => object(SimpleXMLElement)[5] ... 1 => object(SimpleXMLElement)[6] ... 2 => object(SimpleXMLElement)[7] ... 3 => object(SimpleXMLElement)[8] ... 4 => object(SimpleXMLElement)[9] ... object(SimpleXMLElement)[1] public '@attributes' => array (size=1) 'version' => string '2.0' (length=3) public 'channel' => object(SimpleXMLElement)[2] public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'description' => string 'parler d'ici en venant d'ailleurs' (length=33) public 'lastBuildDate' => string 'Tue, 24 Jun 2014 14:37:39 +0000' (length=31) public 'language' => string 'fr' (length=2) public 'generator' => string 'http://wordpress.com/' (length=21) public 'cloud' => object(SimpleXMLElement)[9] public '@attributes' => array (size=5) ... public 'image' => object(SimpleXMLElement)[8] public 'url' => string 'http://s2.wp.com/i/buttonw-com.png' (length=34) public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'item' => array (size=5) 0 => object(SimpleXMLElement)[7] ... 1 => object(SimpleXMLElement)[6] ... 2 => object(SimpleXMLElement)[5] ... 3 => object(SimpleXMLElement)[4] ... 4 => object(SimpleXMLElement)[3] ... object(SimpleXMLElement)[1] public '@attributes' => array (size=1) 'version' => string '2.0' (length=3) public 'channel' => object(SimpleXMLElement)[2] public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'description' => string 'parler d'ici en venant d'ailleurs' (length=33) public 'lastBuildDate' => string 'Tue, 24 Jun 2014 14:37:39 +0000' (length=31) public 'language' => string 'fr' (length=2) public 'generator' => string 'http://wordpress.com/' (length=21) public 'cloud' => object(SimpleXMLElement)[3] public '@attributes' => array (size=5) ... public 'image' => object(SimpleXMLElement)[4] public 'url' => string 'http://s2.wp.com/i/buttonw-com.png' (length=34) public 'title' => string 'Radio Perroquet Info' (length=20) public 'link' => string 'http://dublanc225.wordpress.com' (length=31) public 'item' => array (size=5) 0 => object(SimpleXMLElement)[5] ... 1 => object(SimpleXMLElement)[6] ... 2 => object(SimpleXMLElement)[7] ... 3 => object(SimpleXMLElement)[8] ... 4 => object(SimpleXMLElement)[9] ...
Je vois pas le content avec le racourci ctrl+f peut être que c'est pas possible. par contre j'ai remarqué que je peux récupérer les images c'est une bonne chose