Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2011, 22h38   #1
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
Par défaut Récupérer enclosure flux RSS

Bonjour à tous,
C'est la première fois que je viens ici et je suis un peu perdu je ne sais pas trop où poster mais bon j'espère trouver de l'aide.
Voici mon problème
J'ai un script qui traite les flux rss et je voudrait récupérer l'adresse des enclosure des flux rss. Voici un exemple d'item:

Code :
1
2
3
4
5
6
7
8
<item>
            <title>L'armée égyptienne dissout le Parlement</title>
            <description>	 L'armée égyptienne, en charge de la gestion du pays depuis le départ du...</description>
 
            <pubDate>Sun, 13 Feb 2011 17:08:00 +0100</pubDate>
            <link>http://www.lepoint.fr/monde/l-armee-egyptienne-organise-l-apres-moubarak-13-02-2011-1294902_24.php</link>
            <enclosure url="http://www.lepoint.fr/images/2011/02/13/tantaoui-252716-jpg_142894.JPG" length="163524" type="image/jpeg" />
        </item>

Je ne sais pas comment récupérer l'adresse de l'enclosure.

Mon autre bout de code est comme ça:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$xml = simplexml_load_file('http://www.lepoint.fr/rss.xml');
	foreach($xml->xpath('//item') as $inf)
	$tab[strtotime($inf->pubDate)] = array('titre' => $inf->title, 'type' => $inf->rss, 'texte' => $inf->description,'lien' => $inf->link,'date' => $inf->pubDate);
 
krsort($tab);
$tab = array_slice($tab, 0, 10);
 
foreach($tab as $date => $val){
	$titre=$val['titre'];
	$date=strtotime($val['date']);
	$lien=$val['lien'];
	$texte=$val['texte'];
}
Mais je ne sais pas comment faire pour l'enclosure.
Merci d'avance à ceux qui m'aideront.
Totolef
totolef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 22h40   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
avec attributes
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/02/2011, 22h42   #3
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
OUAH !!!
Jamais eu de réponse aussi rapide.
Merci de m'aider je vais aller voir sa
totolef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 22h49   #4
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
J'ai juste un petit problème:
J'ai mis
Code :
1
2
3
$xml = simplexml_load_file('http://www.lepoint.fr/rss.xml');
//Des trucs au milieu
foreach($xml->enclosure[0]->attributes() as $a => $b) {
Et il me met Fatal error: Call to a member function attributes() on a non-object in /homepages/44/d344826307/htdocs/flux/flux2.php5 on line 30
totolef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 23h04   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
$xml->enclosure[0] n'existe pas, y'a pas enclosure direct a la racine du XML
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 19h37   #6
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
Merci de m'aider.
Mais je ne sais pas comment faire pour cette ligne.
Pourrais-tu m'aider?
Merci
Totolef
totolef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 20h05   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par totolef Voir le message
Merci de m'aider.
Mais je ne sais pas comment faire pour cette ligne.
Pourrais-tu m'aider?
Merci
Totolef
il faut faire tout le chemin absolue ou utilise xpath, c'est comme un dossier
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 20h22   #8
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
J'ai fait sa:
Code :
1
2
<?php
foreach($xml->rss->channel->item->enclosure->attributes() as $a => $b) {
Mais j'ai toujours la même erreur.
Je galère un peu
totolef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 23h07   #9
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
Mon problème avance.
Voici mon code en entier:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
	$xml = simplexml_load_file('http://www.lepoint.fr/rss.xml');
	foreach($xml->xpath('//item') as $inf)
	$tab[strtotime($inf->pubDate)] = array('titre' => $inf->title, 'type' => $inf->rss, 'texte' => $inf->description,'lien' => $inf->link,'date' => $inf->pubDate);
 
krsort($tab);
$tab = array_slice($tab, 0, 10);
 
foreach($tab as $date => $val){
	$titre=$val['titre'];
	$date=strtotime($val['date']);
	$lien=$val['lien'];
	$texte=$val['texte'];
 
 
 
 
$dom = new DomDocument;
$dom->load("http://www.lepoint.fr/rss.xml");
$listetitre = $dom->getElementsByTagName('title');
foreach($listetitre as $titree){
$title=$titree->firstChild->nodeValue;
if($title==$titre)
{
$enclosure = $dom->getElementsByTagName("enclosure");
  foreach($enclosure as $enclos)
  {
    if ($enclos->hasAttribute("url")) {
    	$enclosure==$enclos->getAttribute("url")->nodeValue;
    }
  }
  }
  }
 
$x = 540;
$y = 264; # Taille en pixel de l'image redimensionnée
$size = getimagesize($enclosure);
if ($size) {
if ($size['mime']=='image/jpeg' ) {
$extension_upload='jpeg';
$img_big = imagecreatefromjpeg($file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
$img_mini = imagecreatetruecolor($x, $y)
or   $img_mini = imagecreate($x, $y);
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagejpeg($img_mini,$file );
}
elseif ($size['mime']=='image/png' ) {
$extension_upload='png';
$img_big = imagecreatefrompng($file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or   $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagepng($img_mini,$file );
}
elseif ($size['mime']=='image/gif' ) {
$extension_upload='gif';
$img_big = imagecreatefromgif($file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or   $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagegif($img_mini,$file );
}
}
    $miniature = $date;
    $nomminiature = str_replace(' ','',$miniature).".".$extension_upload;
    $miniature = "../img/".$nomminiature;
    move_uploaded_file($img_mini,$miniature);
    mysql_query("INSERT INTO fluxx VALUES('', '" . $date . "', '" . mysql_real_escape_string($lien) . "', '" . mysql_real_escape_string($titre) . "','" . mysql_real_escape_string($texte) . "','".$nomminiature."')")or die (mysql_error());
}
C'est peut être pas la meilleur solution mais bon.
Maintenant j'ai une erreur:
Catchable fatal error: Object of class DOMNodeList could not be converted to string in /homepages/44/d344826307/htdocs/flux/flux2.php5 on line 52.
totolef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h23.


 
 
 
 
Partenaires

Hébergement Web