PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Besoin d'un coup de main pour preg_match_all » 10-01-2018 06:57:45

Bonjour tof73 et merci pour cette réponse.

Une question, si j'utilise preg-replace de cette façon, ça risque de me supprimer tous les attributs height et width, même ceux d'autres éléments que mes images du coup?
Car mon souci c'est que je dois, bien sur, garder ces attributs sur d'autres éléments...

Ps:vu ton ton pseudo, tu es du 73?

#2 Forum Général PHP » Besoin d'un coup de main pour preg_match_all » 10-01-2018 06:57:45

Vangardis
Réponses : 2

Bonjour à tous.
Je suis nouveau sur le forum et je débute en php.
J'ai beaucoup de mal à conceptualiser certaines choses, les tableaux par exemple, quand ça devient trop compliqué. Je n'ai pas vraiment un esprit matheux, du coup je suis souvent dépassé..
Bref, je vais essayer de vous expliquer mon souci.

J'utilise un petit Cms que je cherche à modifier un peu pour des besoins perso. J'ai intégré, pour l'édition de pages, un éditeur (CKeditor).
Tout marche très bien, mais je me suis rendu compte que, quand on insère des images, l'éditeur ajoute automatiquement leurs tailles sous forme de Css, en style incorporé à la balise IMG.
img alt="" src="xxx" style="height: 269px; width: 666px;"  par exemple.

Or, si l'utilisateur ne pense pas à effacer ces données, les images perdent leur côté "responsive". Ce qui est assez gênant.

Je cherche donc à supprimer height:xxxpx et width:xxxpx du style incorporé, mais sans toucher au reste, éventuellement. Des styles "border, margin" etc qui doivent rester...

Je me suis donc tourné vers la fonction preg_match ... et j'ai réussi à faire un truc qui fonctionne comme je veux mais ... ça ne fonctionne que si il n'y a qu'une seule image...


$annonce_contenu_0= $_POST['texte'];
preg_match("#<img (.*)(style=\")(width: ([0-9]+)px;)(.*)(height: ([0-9]+)px;)(.*)(\/>)#Ui", $annonce_contenu_0, $out);   
$trucsaremplacer = array($out[3],$out[6]);
$trucsfinis = array('','');
$contenufinal = str_replace($trucsaremplacer,$trucsfinis,$annonce_contenu_0);



Si je poste deux images, ça ne supprime les valeurs que sur une. Je viens donc de comprendre que preg_match s’arrête dès qu’une occurrence est détectée.

J'ai donc continué mes recherches et je pense qu'il faut que j'utilise la fonction preg_match_all .. mais là je coince totalement.

Quelqu'un pourrait il m'aider pour arriver à supprimer ce que je veux grâce à preg_match_all?

Voilà, j'espère avoir été assez précis. Merci d'avance.

Pied de page des forums

Propulsé par FluxBB