Mettre tous les tags img d'un attribut xml dans une array [Résolu]

Signaler
Messages postés
34
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
26 mars 2013
-
Messages postés
34
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
26 mars 2013
-
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

Messages postés
17
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
7 novembre 2011

preg_match_all('/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $txt, $arrResult);

foreach($arrResult[1] as $lnk)
{
echo $lnk.'
';
}
Messages postés
34
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
26 mars 2013
1
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('/
Messages postés
17
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
7 novembre 2011

il y a preg_match_all() qui te retourne une array avec toute les img tags
Messages postés
34
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
26 mars 2013
1
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 ?
Messages postés
34
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
26 mars 2013
1
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 !