Mettre tous les tags img d'un attribut xml dans une array

Résolu
cs_jimmyhendrix Messages postés 34 Date d'inscription samedi 31 juillet 2010 Statut Membre Dernière intervention 26 mars 2013 - 12 avril 2011 à 03:32
cs_jimmyhendrix Messages postés 34 Date d'inscription samedi 31 juillet 2010 Statut Membre Dernière intervention 26 mars 2013 - 16 avril 2011 à 04:10
Salut !

J'ai un problème. J'ai un fichier xml qui contient les articles de mon blog. Donc, j'ai un peu de code html dans un attribut appellé texte qui contient le contenu du post. J'ai de temps en temps quelques img tags. Voilà le problème.

Je cherche un moyen de récupérer tous les src de mes img tags de mon fichier xml et les introduire dans une array (ou une boucle)(ou les deux). En fait, j'aimerais toutes les mettre dans une variable que je peux introduire dans le code html de ma page du genre <?php echo $tous_mes_images; ?> (Pour être plus précis : dans le head de ma page, je veux créer plusieurs <link rel="image_src" href="SRC-DE-MON-IMAGE" />)

<?php
//Je récupère mon texte dans mon fichier xml
$xdoc = new DomDocument;
$xdoc->Load('postblog.xml');
$xname = $xdoc->getElementsByTagName('post');
$select = $xname->item(0);
$texte = $select->getAttributeNode('texte')->value;

//mais la suite, je me le figure très mal...

//et j'ai trouvé ce code, mais je n'arrive
//pas à le modifier comme je vous l'explique plus haut :

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');


///// Je ne veux pas qu'il aille prendre le tout dans un fichier html


// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '
';

// Find all links 
foreach($html->find('a') as $element) 
       echo $element->href . '
';

?>



Est-ce que quelqu'un a une piste ? Je suis vraiment bloqué. J'espère avoir été clair, c'est dure à expliquer. Merci.

5 réponses

salttaste Messages postés 17 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 7 novembre 2011
15 avril 2011 à 11:02
preg_match_all('/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $txt, $arrResult);

foreach($arrResult[1] as $lnk)
{
echo $lnk.'
';
}
3
cs_jimmyhendrix Messages postés 34 Date d'inscription samedi 31 juillet 2010 Statut Membre Dernière intervention 26 mars 2013 1
13 avril 2011 à 03:02
C'est frustrant, j'y suis presque !

J'ai trouvé une fonction qui le fait, mais ça ne fonctionne pas pour tous les img tags, seulement le premier :

<?php

$html = ' et un deuxieme ';

if (preg_match('/
0
salttaste Messages postés 17 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 7 novembre 2011
14 avril 2011 à 20:04
il y a preg_match_all() qui te retourne une array avec toute les img tags
0
cs_jimmyhendrix Messages postés 34 Date d'inscription samedi 31 juillet 2010 Statut Membre Dernière intervention 26 mars 2013 1
15 avril 2011 à 00:42
Ouais

en effet, j'ai essayé preg_match_all(), mais j'arrive pas à cerné chacun des src indépendamment. Je vais te donner mon code, ça va être plus clair :

<?php
$xdoc = new DomDocument;
$xdoc->Load('postblog.xml');
$xname = $xdoc->getElementsByTagName('post');
$select = $xname->item(0);

$texte = $select->getAttributeNode('texte')->value;
htmlspecialchars_decode($description, ENT_NOQUOTES);

if (preg_match('/';
} else {
    $thb2 = '';
}
?>


Donc, le code fonctionne très bien, mais j'obtiens seulement un thumbnail ; j'aimerais en avoir <link rel... pour chacune des images tags qui se trouverait dans mon attribut texte (xml).

Est-ce que t'as une idée comment faire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jimmyhendrix Messages postés 34 Date d'inscription samedi 31 juillet 2010 Statut Membre Dernière intervention 26 mars 2013 1
16 avril 2011 à 04:10
Hourra !

Ça fonctionne à merveille ! Je n'ai eu qu'à rajouter foreach($arrResult[1] as $lnk)
{
echo '<link rel="image_src" href="'.$lnk.'" />';
}

et j'ai exactement ce que je cherchais ! Merci encore !
0
Rejoignez-nous