OVH Cloud OVH Cloud

regex & expression reguliere

18 réponses
Avatar
stock_fluxy
Bonjour,

Je voudrais faire quelque chose de très simple mais je ne sais pas
comment mis prendre :-(

Je m'explique, je souhaite uniquement récupérer le path d'un fichier
sur une balise <img />.

Exemple :

J'ai :

<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />

ou

<img HEIGHT=585 WIDTH=320 src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />

Je veux uniquement récupérer :

IMG/rubon2.jpg dans une variable

si quelqu'un est caller en regex ca m'aiderais.

Merci.

Bonne journée.

Flux

10 réponses

1 2
Avatar
Sebastien Bourgasser
Je m'explique, je souhaite uniquement récupérer le path d'un fichier
sur une balise <img />.

Exemple :

<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />


Bonsoir,

Ceci devrait faire l'affaire (non testé):

<?

$val = "<iMG HEIGHTX5 WIDTH20 src='IMG/rubon2.jpg' alt='logo
RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />";

$regexp = "/<img .*src=(?:'|")?([w./]+)(?:'|")?/i";
preg_match($regexp, $val, $matches);

print_r($matches);
?>

$matches[1] doit contenir ce que vous souhaitez

Vous pouvez avoir src='IMG/rubon2.jpg' ou encore src="IMG/rubon2.jpg" ou
encore src=IMG/rubon2.jpg

--
Séb

Avatar
loufoque
a dit le 25/07/2005 à 12:49:

Je m'explique, je souhaite uniquement récupérer le path d'un fichier
sur une balise <img />.


`<img .*?src=(['"])(.*?)1.*?/?>`i

$2 contient ce que tu veux

Avatar
CrazyCat
wrote:
Je m'explique, je souhaite uniquement récupérer le path d'un fichier
sur une balise <img />.
<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />
ou
<img HEIGHTX5 WIDTH20 src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />
Je veux uniquement récupérer :
IMG/rubon2.jpg dans une variable


un masque comme "/<img[^>]+src=['"]{1}([a-z0-9./]{3,})1>/" utilisé
en pregi (insensible à la casse)?
et tu récupères ce qui est entre () => [a-z0-9./]{3,}

--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Benoît
Salut,

Essaye un truc du style :

$results=array();
$subject = "<img src='IMG/rubon2.jpg' alt='logo RUBRIQUE 2'
style='border-width: 0px;' class='spip_logos' />";
$pattern = "/^<img.*src='(.*.jpg)'.*/>/";
preg_match_all($pattern, $subject, $results);
echo $results[1][0];

Vite fait, c'est peut etre pas la meilleure solution ...
Avatar
Steuf
Bonjour,



Bonjour

Je voudrais faire quelque chose de très simple mais je ne sais pas
comment mis prendre :-(

Je m'explique, je souhaite uniquement récupérer le path d'un fichier
sur une balise <img />.

Exemple :

J'ai :

<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />


Horrible ce code html déjà !

<img src="IMG/rubon2.jpg"
alt="logo RUBRIQUE 2" style="border-width: 0px;" class="spip_logos" />


ou

<img HEIGHTX5 WIDTH20 src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />


C'est pas plus beau...

<img height="585" width="320" src="IMG/rubon2.jpg"
alt="logo RUBRIQUE 2" style="border-width: 0px;" class="spip_logos" />


D'ailleurs quel est l'intéret de mettre un style dans la balise img (
style="border-width: 0px;" ), ce qui n'est pas ce qui se fait de mieux
en plus, alors que vous avez une class dans celle ci !


Je veux uniquement récupérer :

IMG/rubon2.jpg dans une variable


L'image est générée ? Elle vient d'où ? D'une code html en dur ?


si quelqu'un est caller en regex ca m'aiderais.


Bah justement ce n'ets peu être pas forcement la meilleurs des solutions
( Les regex c'est assez lourd au traitement tout de même ), il nous faut
plus de détails pour savoir d'où vient ces balises img, et pourquoi
vouloir le chemin vers celle ci.


Merci.



De rien

Bonne journée.

Flux


Avatar
Guillaume Bouchard
wrote:
Je m'explique, je souhaite uniquement récupérer le path d'un fichier
sur une balise <img />.


<?php
$file_path = '';
$masque = '`<img[^>]*src=('|")(.*?)(1)`';
$file = file_get_contents($file_path);
preg_match_all($masque,$file,$matchs);

print_r($matchs);
?>

<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />


Pourquoi tous le monde n'utilise pas des doubles quotes pour ces
attributs, cela simplifierait tellement le codage...

--
Guillaume.

Avatar
Steuf
Pourquoi tous le monde n'utilise pas des doubles quotes pour ces
attributs, cela simplifierait tellement le codage...


C'est surtout la seule façon pour du code html, sinon cela ne respecte
pas les standarts. Ils utilisent ça tout simplement parce que un echo il
mettent des doubles quotes, du coup pour ne pas de slash à chaque double
quote dans le code html, ils mettent des simples à tort...

D'une l'utilisation de double quote dans le echo n'est pas justifié, et
de deux les simples quotes n'existe pas dans du code html. la vraie
solution est du simple quote pour le echo et du double pour le code
html. Mais je sais pas, beaucoup font l'autre "méthode" complétement
fausse... Allez savoir pourquoi :-).

--
Mon nouveau bébé : http://exinsidephp.free.fr

Avatar
lolo
<?php
$sujet = "<img HEIGHTX5 WIDTH20 src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;'
class='spip_logos' />";

$temp = preg_match('/<img.*src='(.*)'[^>]*/>/',$sujet,
$matches);

print_r($matches);
?>


explication : recherche une chaine qui :
commence par <img
ensuite des caractères quelconques
puis src='QUELQUE_CHOSE_QU'ON_CAPTURE_AVEC_LES_PARENTHESES'
puis n'importe quel caractère sauf le ">"
puis le "/" (à échapper, d'où le "" devant)
et enfin le ">" final

J'espère avoir été clair, mais ca vaut le coup que tu te mettes
un peu aux expressions régulières, ca peut servir partout, même
dans les requêtes sql ou autre.



texte original :
Bonjour,

Je voudrais faire quelque chose de très simple mais je ne sais
pas
comment mis prendre :-(

Je m'explique, je souhaite uniquement récupérer le path d'un
fichier
sur une balise <img />.

Exemple :

J'ai :

<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;'
class='spip_logos' />

ou

<img HEIGHTX5 WIDTH20 src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;'
class='spip_logos' />

Je veux uniquement récupérer :

IMG/rubon2.jpg dans une variable

si quelqu'un est caller en regex ca m'aiderais.

Merci.
Avatar
Olivier Miakinen

<img src='IMG/rubon2.jpg'
alt='logo RUBRIQUE 2' style='border-width: 0px;' class='spip_logos' />


Pourquoi tous le monde n'utilise pas des doubles quotes pour ces
attributs, cela simplifierait tellement le codage...


1) Parce que les simple quotes sont autorisées en HTML et XHTML.
2) Surtout, parce qu'elles simplifient tellement le codage en PHP.

Ça commence à devenir un marronnier dans ce forum, mais personnellement
je trouve que :
echo "<img src='$fichier' alt='$alternatif' />";
est plus simple et plus lisible que :
echo "<img src="$fichier" alt="$alternatif" />";
et que :
echo '<img src="'.$fichier.'" alt="'.$alternatif.'" />';

C'est encore plus flagrant si on utilise le contenu de tableaux
associatifs :
echo "<img src='$f[pomme]' alt='$alt[pomme]' />";
echo "<img src="$f[pomme]" alt="$alt[pomme]" />";
echo '<img src="'.$f['pomme'].'" alt="'.$alt['pomme'].'" />';


Avatar
Olivier Miakinen

Pourquoi tous le monde n'utilise pas des doubles quotes pour ces
attributs, cela simplifierait tellement le codage...


C'est surtout la seule façon pour du code html, sinon cela ne respecte
pas les standarts.


Oh non, pas encore cette vieille légende !

Les simples quotes ont *toujours* été standard en HTML et en XHTML, et
*tous* les navigateurs le savent (mais pas les concepteurs, hélas).
<http://groups.google.fr/group/fr.comp.lang.php/msg/299270e3fe8b252b>.

Ils utilisent ça tout simplement parce que un echo il
mettent des doubles quotes, du coup pour ne pas de slash à chaque double
quote dans le code html, ils mettent des simples


Oui, bien sûr.

à tort...


À raison. Lire les normes citées dans mon précédent article.


1 2