Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout de la taille des images a la volee

3 réponses
Avatar
Steph.K
Bonjour,

J'ai une variable $txt qui contient du texte et des images (nb inconnu),
les images n'ont pas leurs tailles de spécifiées et je voudrais
l'ajouter à la volée.
Je sais récupérer l'ensemble des balises image :
$chaine='`<img src="(.*?)" (.*?)>`';
preg_match_all($chaine,$txt,$match);
$match[0] contient toute la balise et $match[1] contient le chemin de
l'image.

Je sais récupérer la taille des images :
$taille=getimagesize($match[1]);

Je vous fais grace de la boucle for() mais je récupère bien toutes mais
images et toutes les tailles ($taille[3]).

Je n'arrive pas à remplacer les balises image d'origine par les balises
modifiées dans ma variable $txt.

Ex. :
Origine :
du texte
<img src="mon_image.jpg" alt="" />
du texte
<img src="mon_image2.jpg" alt="" />

Je voudrais au final :
du texte
<img src="mon_image.jpg" alt="" width="la_largeur de mon_image"
height="la_hauteur de mon_image" />
du texte
<img src="mon_image2.jpg" alt="" width="la_largeur de mon_image2"
height="la_hauteur de mon_image2" />

Est-ce que quelqu'un aurait le bout de script kivabien dans un coin de
disque dur ?

Par avance merci,

--
Steph.K
http://stephkup.nexenservices.com/accueil/

3 réponses

Avatar
Olivier Miakinen

[...]

Ex. :
Origine :
du texte
<img src="mon_image.jpg" alt="" />
du texte
<img src="mon_image2.jpg" alt="" />

Je voudrais au final :
du texte
<img src="mon_image.jpg" alt="" width="la_largeur de mon_image"
height="la_hauteur de mon_image" />
du texte
<img src="mon_image2.jpg" alt="" width="la_largeur de mon_image2"
height="la_hauteur de mon_image2" />


Ça c'est typiquement du boulot pour preg-replace-callback(), une
fonction qui mériterait d'être plus connue :

http://fr.php.net/manual/fr/function.preg-replace-callback.php

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Steph.K
[...]
Ça c'est typiquement du boulot pour preg-replace-callback(), une
fonction qui mériterait d'être plus connue :

http://fr.php.net/manual/fr/function.preg-replace-callback.php


Effectivement ça marche.
Pour ceux qui sont intéressé :

$chaine='`<img src="(.*?)" (.*?)>`';
function taille($match){
$taille_image = getimagesize($match[1]);
$result=preg_replace('`/>`',$taille_image[3].' />',$match[0]);
return $result;
}
$txt = preg_replace_callback($chaine,'taille',$txt);

Merci Olivier,

--
Steph.K
http://stephkup.nexenservices.com/accueil/

Avatar
Olivier Miakinen

http://fr.php.net/manual/fr/function.preg-replace-callback.php


Effectivement ça marche.
Pour ceux qui sont intéressé :

$chaine='`<img src="(.*?)" (.*?)>`';
function taille($match){
$taille_image = getimagesize($match[1]);
$result=preg_replace('`/>`',$taille_image[3].' />',$match[0]);
return $result;
}
$txt = preg_replace_callback($chaine,'taille',$txt);


Sauf erreur, tu peux légèrement simplifier ton expression de $chaine
puisque tu n'utilises pas $match[2] :

$chaine='`<img src="(.*?)" .*?>`';

Voire :

$chaine='`<img src="(.*)" .*>`U';


--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)