preg_match

Eléphant du PHP | 109 Messages

06 août 2012, 19:10

Bonjour
Je n'arrive pas à écrire la partie que je veux isoler dans mon preg_match
j'aurais du code du style
	le texte ici de tout ira bien</p>
<p>
	&nbsp;</p>
<p>
	&nbsp;</p>
<p>
	<img alt=\"\" src=\"/images/album_t4.jpg\" style=\"width: 709px; height: 709px;\" /></p>
</br>nom de image jaquette : 

je voudrais juste isoler à chaque fois album_t4.jpg
mais je n'arrive pas à rentrer dans la balise
voici mon code
preg_match('/<img(.*?)>/',$texte,$res);
Merci de votre aide
Nadege

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 août 2012, 19:26

salut,

ton masque n'est pas bon if tenir compte de l'espace et du src="" :)

donc plutôt dans le style <img src="(.*?)"

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 109 Messages

06 août 2012, 19:41

en fait je ne comprends pas ces signes et je ne trouve rien pour les expliquer

ViPHP
AB
ViPHP | 5818 Messages

06 août 2012, 20:04

$text = "le texte ici de tout ira bien</p>
<p>
        &nbsp;</p>
<p>
        &nbsp;</p>
<p>
        <img alt=\"\" src=\"/images/album_t4.jpg\" style=\"width: 709px; height: 709px;\" /></p>
</br>nom de image jaquette : ";


preg_match('`<img.*src ?= ?"(.*)"`U',$text,$match);

$result = $match[1];//  contenu de src="" (/images/album_t4.jpg)
$result = basename($result);//emploi de la fonction 'basename' pour trouver le fichier dans la chaine 
var_dump($result);
S'il peut y avoir plusieurs images et que tu les veux toutes il faudra utiliser "preg_match_all" à la place de "preg_match" et dans ce cas "$result" sera un tableau avec autant d'éléments que de résultats. preg_match ne trouvera que la première expression trouvée.

Un bon site assez complet http://www.expreg.com/
Un bon petit tuto pour commencer http://www.siteduzero.com/tutoriel-3-14 ... e-1-2.html#

Eléphant du PHP | 109 Messages

06 août 2012, 20:13

Merci de ton aide
je suis sur les sites
par contre le code ne fonctionne pas ca ecrit
string(0) ""
p>

il n'y a pas d'echo?

ViPHP
AB
ViPHP | 5818 Messages

06 août 2012, 20:19

Testes dans une page séparée parce que chez moi cela fonctionne correctement en faisant un copié/collé.

Sinon le "var_dump" tu peux le remplacer par un "echo" (tant que ce que tu affiche est une chaine de caractère mais pas un tableau ni un objet).

Eléphant du PHP | 109 Messages

06 août 2012, 20:29

ca marche bien c'est moi qui ai copié betement le $text au lieu de $texte
merci beaucoup
je dois avouer queje comprends rien a tes ces symboles mm avec les sites que tu m'a donnée que j'avais déjà consulté :(

ViPHP
AB
ViPHP | 5818 Messages

06 août 2012, 22:09

je dois avouer queje comprends rien a tes ces symboles mm avec les sites que tu m'a donnée que j'avais déjà consulté :(
Avec le tuto du site du zero tu devrais pouvoir suivre vu que c'est normalement accessible aux débutants. Mais bon tu es peut-être encore trop débutante, dans le sens où l'on aborde généralement pas les expressions régulières sans une connaissance de base un peu consistante. Dans ce cas faut prendre son temps, y aller progressivement et faire des tests à chaque étape. Sinon continues un peu le php et tu pourras y revenir certainement plus facilement avec un peu plus de connaissances.