Extraire les images d'un texte


evets
WRInaute discret
WRInaute discret
 
Messages: 248
Inscription: 16 Sep 2004

Extraire les images d'un texte

Message le Dim Mai 18, 2008 16:22

Bonjour,

Je suis à la recherche de l'expression régulière me permettant d'extraire des images d'un texte html

C'est à dire pouvoir avoir le nom de l'image toto.gif contenu dans <IMG ......... >

Ca fait plusieurs heures que je me prends la tete sans succes :-(

Voici mes tentatives :
Dans le texte :
<P><IMG style="WIDTH: 377px; HEIGHT: 116px" height=427 alt="" hspace=0 src="file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d'images/Collines.jpg" width=423 align=baseline border=0></P><P><IMG style="WIDTH: 242px; HEIGHT: 115px" height=297 alt="" hspace=0 src="file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d'images/Coucher%20de%20soleil.jpg" width=374 align=baseline border=0></P>

Je voudrais extraire les images Coucher%20de%20soleil.jpg et Collines.jpg

Voici mon code :

$pattern = "#\[IMG(.*?)\]#";

if(preg_match($pattern, $texteascannerFR, $regs_url))

$total = count($regs_url[0]);
echo "<br>TOTAL : ".$total."<br>";
for($i = 0; $i < $total; $i++){
$nom_image = $regs_url[1][$i];
echo "<br>NomImage : ".$nom_image."<br>";
}
}


Pouvez-vous m'aider? Je vous en remercie par avance.[/code]


evets
WRInaute discret
WRInaute discret
 
Messages: 248
Inscription: 16 Sep 2004

Message le Dim Mai 18, 2008 17:20

Re bonjour,

J'ai touvé cette expression reguliere qui me permet d'extraire la photo du texte :
$pattern = "/<img.*?src=([\'"])([^\1]+)\1/i";


Mais ceci me retourne trop de choses encore :
file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d'images/Collines.jpg" width=423 align=baseline border=0>

Je continue mes recherches mais si vous avez la solution merci de ne pas hésiter :wink:


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Message le Dim Mai 18, 2008 17:57

As-tu essayé avec basename ?


evets
WRInaute discret
WRInaute discret
 
Messages: 248
Inscription: 16 Sep 2004

Message le Dim Mai 18, 2008 18:29

Merci pour ton aide,

Voici ce que j'ai à présent,

J'y suis presque !!

Code: Tout sélectionner
$text='<P><IMG style="WIDTH: 377px; HEIGHT: 116px" height=427 alt="" hspace=0 src="file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d'images/Collines.jpg" width=423 align=baseline border=0></P>
<P><IMG style="WIDTH: 242px; HEIGHT: 115px" height=297 alt="" hspace=0 src="file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d'images/Coucher%20de%20soleilm.jpg" width=374 align=baseline border=0>
</P>';
$pattern='/file.*?>/si';

if(preg_match_all($pattern, $text, $regs_url))
{
   $total = count($regs_url[0]);
   echo "<br>TOTAL : ".$total."<br>";
   for($i = 0; $i < $total; $i++){
      $nom_image = $regs_url[0][$i];
      echo "<br>Nom Image : ".basename($nom_image)."<br>";
   }
}


Cela me retourne :
TOTAL : 2

Nom Image : Collines.jpg" width=423 align=baseline border=0>

Nom Image : Coucher%20de%20soleilm.jpg" width=374 align=baseline border=0>


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Dim Mai 18, 2008 20:32

tu souffres... tu souffres beaucoup.

Tu as fait beaucoup d'efforts, alors voilà ma contribution :

Code: Tout sélectionner
$text = '<P><IMG style="WIDTH: 377px; HEIGHT: 116px" height=427 alt="" hspace=0 src="file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d\'images/Collines.jpg" width=423 align=baseline border=0></P>
<P><IMG style="WIDTH: 242px; HEIGHT: 115px" height=297 alt="" hspace=0 src="file:///C:/Documents%20and%20Settings/All%20Users/Documents/Mes%20images/%C9chantillons%20d\'images/Coucher%20de%20soleilm.jpg" width=374 align=baseline border=0>
</P>';

$value = preg_match_all('#images/([^/]+)"#Us', $text, $matches);


echo '<pre>';
print_r($matches[1]);
echo '</pre>';


Tu récupères ton masque dans un tableau.

Il va te falloir apprendre le chinois pour décoder les REGEX ^^


evets
WRInaute discret
WRInaute discret
 
Messages: 248
Inscription: 16 Sep 2004

Message le Lun Mai 19, 2008 9:58

Merci pour votre aide !

C'est vrai que c'est pas facile regex ! :roll:


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Lun Mai 19, 2008 20:12

http://www.expreg.com/index.php

Fais en ton livre de chevet, et tu deviendra limpide en déchiffrement REGEX ^^

Après, c'est vrai que quand tu as compris le principe, c'est très facile... mais j'ai bien du passer une trentaine d'heure à tout comprendre et à bien maitriser... Le pire est qu'il faut tout assimiler en même temps !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: salva et 0 invités