Extraire une url d'une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Extraire une url d'une chaine

par RobertVonTagada » 26 mai 2006, 18:01

Et voilà !! J'viens d'en finir avec mon petit soucis.

Le but, concrètement, était d'empêcher l'affichage d'image trop grande sur un forum... enfin non, pas empêcher, mais réduire plutot.

Voilà ce que ça donne au final :
$newWidth = 500;
$newHeight = 500;				
preg_match_all('`\[img]([^[]+)\[/img]`s', $CorpMessage ,$retour); 
$countIMG = count($retour[1]);
for ($i=0; $i<$countIMG; $i++) {
	$size = getimagesize($retour[1][$i]);
	$ratioWidth = $size[0]/$newWidth; 
	$ratioHeight = $size[1]/$newHeight; 
	// taille maximale dépassée ? 
	(($ratioWidth > 1) || ($ratioHeight > 1)) { 
		if ($ratioWidth < $ratioHeight) { 
			$destWidth = $size[0]/$ratioHeight; 
			$destHeight = $newHeight; 
		} else { 
			$destWidth = $newWidth; 
			$destHeight = $size[1]/$ratioWidth;
		} 
	} else {
		$destWidth = $size[0]; 
		$destHeight = $size[1];
	}
	$CorpMessage = str_replace($retour[0][$i],"<img src=\"".$retour[1][$i]."\" width=".$destWidth." height=".$destHeight.">", $CorpMessage);
}

par RobertVonTagada » 26 mai 2006, 15:31

Yes !
ça m'a l'air d'être bon ^^

Merci bien !

ps : ...heu... j'peux pas mettre [resolu] vu que je ne m'étais pas enregistré :cry:

par Truc » 26 mai 2006, 15:19

Utilise preg_match_all()
$message=preg_match_all('`\[img]([^[]+)\[/img]`s',$CorpMessage);  ,$retour); 
tu récupères un tableau ($retour) avec les différentes url relevées.

par RobertVonTagada » 26 mai 2006, 14:49

Rarf... non malheureusement, c'est pas trés clair en faite.

J'ai beaucoup de mal avec les expressions régulières.
Je vais pas cacher que celle que j'utilise est un simple copier-coller qui, ma foi, fonctionne.

En faite, ton idée est pas forcement mauvaise (si j'ai bien compris là où tu veux en venir) mais si dans mon contenu j'ai, par exemple, "blalbla tu prend ton image /tatata/img.jpg", il faudra pas récupérer ce "/tatata/img.jpg"... c'est belle et bien l'url qui va se trouver entre les balises [ img] et [ /img] que je voudrai extraire.

par agité » 26 mai 2006, 14:32

En supprimant le chemin jusqu'a l'image, tu choisis de prendre en fait que ce qui precede comme mot le .extension et en verrifiants l'extension

enfin je sais pas si c'est clair...

Extraire une url d'une chaine

par RobertVonTagada » 26 mai 2006, 14:25

Bonjours à tous !

Voilà, je suis en train de traiter un contenu de message pour un forum type phpBB.
En gros, j'ai un script qui traite mon contenu à l'affichage, et entre autre, une expression régulière qui gère l'affichage d'une image :
$CorpMessage = eregi_replace( "\[img\]([^]]*)\[/img\]","<img src=\"\\1\">",$CorpMessage);
Avant ça, j'aurai souhaité récupérer l'url de cette image afin de la vérifier.
Malheureusement je n'y arrive pas :cry:

J'ai testé comme ça :
$Result = preg_split("\[img\]([^]]*)\[/img\]", $CorpMessage);
Mais $Result ne me retourne rien.

Pour faire simple, comment extraire une url d'une chaine qui pourrait se trouver entre [ img] et [ /img] (sans espace bien sur).

Par avance, merci.