Page 1 sur 1

eregi

Posté : 24 juil. 2009, 12:28
par Levan
Bonjour,

J essaye de récupérer le nom d une photo dans do code html a l aide du eregi

exemple:

$paragraphe = '<p><img src=/monchemin/nomfichier.jpg /> reste du paragraphe</p>';

j ai fait un truc comme ca

$photo = eregi('/monchemin/(.*)jpg',$paragraphe,$regs);


cela ne récupère pas juste le nom du fichier.

Quelqu'un aurait il une idee.

Par avance merci.

Posté : 24 juil. 2009, 13:08
par Victor BRITO
eregi() ne sert qu'à vérifier si l'on trouve une expression rationnelle dans une chaîne de caractères (soit dit en passant, en PHP 5.3, cette fonction tombe en désuétude au profit de preg_match() et preg_match_all() ;) ).

Pour ce que tu cherches à faire, regarde du côté de la fonction substr().

De plus, pour les exemples de code PHP, tu peux les rendre plus lisibles en les encadrant par les balises [php] et [/php]. ;)

Posté : 24 juil. 2009, 13:30
par micetf
Voici une proposition avec preg_match().
$paragraphe = '<p><img src=/monchemin/nomfichier.jpg /> reste du paragraphe</p>'; 
preg_match('/.*\/(.*jpg).*/',$paragraphe,$result);
echo $result[1]; // nomfichier.jpg
Fred

Posté : 24 juil. 2009, 14:17
par niuxe
Hello,

Est ce qu'il y a une seule image sur la page html ? Je te propose de lire ceci :
$fichier = 'test.html';
$ressource = file_get_contents($fichier);
$capture = array();
$listeNomFichier = array();
$pattern = '#src="(.*)[jpg|gif|jpeg|png]{1}"#iU';

preg_match_all($pattern,$ressource,$capture);

for($i = 0;$i < count($capture[0]); $i++){
    $debut = strrpos($capture[0][$i],'/');
    $totalNomFichier = (strlen($capture[0][$i]) - $debut);
    $listeNomFichier[] = substr($capture[0][$i],$debut + 1,$totalNomFichier - 2);
}

echo '<pre>';
print_r($listeNomFichier);
echo '</pre>';
Si tu as des questions, n'hésite pas. :)

Comme cela était dit précédemment, je te conseille également d'utiliser les fonctions PCRE (preg_match(), preg_replace(), etc.) et non pas POSIX (ereg(), ereg_replace(), etc.). Les PCRE sont plus performantes.

Bonne journée à toi.