begin process at 2012 05 31 01:11:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Problème avec la fonction preg_replace


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec la fonction preg_replace

jeudi 18 février 2010 à 12:33:33 | Problème avec la fonction preg_replace

Sub_Mat

Bonjour à tous,

Voici mon problème :
Je récupère de ma base de donnée une donnée commentaire.
Dans ce commentaire, il y a des images qui sont placer entre des balises [img][/img]. Jusqu'ici tout va bien, sauf que voilà l'idée est d'afficher ces images dans un fichier pdf, grâce à la librairie "fpdf.php" disponible ici : http://www.fpdf.org/

- Pour afficher une image avec "fpdf.php" on utilise la fonction :
Code PHP :
$this->Image()


Donc voici le code que sa me donne :

Code PHP :
// Je récupère mon commentaire de ma base de donnée
$commentaire = $donnees['commentaire'];

// je remplace donc les balises [img][/img] par la fonction 
// $this->Image() avec $1 qui est égale au lien vers l'image.
$commentaire = preg_replace("#\[img\](.*?)\[/img\]#", $this->Image
('$1'), $comment);


Et voilà une erreur s'affiche :
FPDF error: Image file has no extension and no type was specified: $1

Donc on pourrait croire que mon image no pas d'extension, mais voilà si j'enlève ma fonction $this->Image() et que je laisse simplement '$1', je n'ai plus de problème et encore mieux je peux voir que mon fichier à une extension. Voici donc mon deuxième code au complet :

Code PHP :
// Je récupère mon commentaire de ma base de donnée
$commentaire = $donnees['commentaire'];

// je remplace donc les balises [img][/img] par $1 
// qui est égale au lien vers l'image.
$commentaire = preg_replace("#\[img\](.*?)\[/img\]#", '$1', $comment);


Ce qui me retourne :
http://www.monsite.com/images/palmier.png

Je pense que mon problème vient de l'utilisation de
la fonction $this->Image()

Merci d'avance pour vos réponses !
Cordialement,
Sub_Mat
jeudi 18 février 2010 à 17:22:40 | Re : Problème avec la fonction preg_replace

seblechinois

Bonjour,
Une fois que tu as "http://www.monsite.com/images/palmier.png" dans $commentaire
Si tu utilises la fonction image comme ceci :
Code PHP :
$this->Image('<?php echo $commentaire; ?>');
[/code]
Ca donne quoi?

S.
jeudi 18 février 2010 à 17:48:31 | Re : Problème avec la fonction preg_replace

Sub_Mat

Bonjour seblechinois,
Voici le message qu'il me retourne :

FPDF error: Image file has no extension and no type was specified: $commentaire

Ce qui est normale puisque un commentaire n'est pas égale à un lien vers une image, et pour le coup je comprends le message d'erreur !

Zut, mon problème n'est toujours pas résolu !

Merci quand même pour votre réponse seblechinois !
Cordielement,
Sub8mat


jeudi 18 février 2010 à 18:08:47 | Re : Problème avec la fonction preg_replace

seblechinois

Re,
Je ne comprend pas bien, la fonction image() attend en argument un "string" qui contient le chemin ou l'URL de l'image?
Donc si la variable $commentaire contient l'URL de l'image, ça devrait marcher (en faisant attention au "'")?

$commentaire = preg_replace("#\[img\](.*?)\[/img\]#", $this->Image('$1'), $comment);


Ce qui me gêne dans cette ligne, c'est d'insérer $this-> Image('$1') dans la fonction preg_replace().
Peut-être faudrait-il découper le commentaire au niveau des balises les ajouter avec la fonction Cell() et insérer les images entre d'eux?

S.
jeudi 18 février 2010 à 19:27:13 | Re : Problème avec la fonction preg_replace

Sub_Mat

re seblechinois,

Voici ce qu'ils diseent dans leur manuel :

/////////////////////////////////////////////////////////////////////////
Image

Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]])
Description
Place une image. Les dimensions occupées dans la page peuvent être indiquées de plusieurs manières :
largeur et hauteur explicites (exprimées dans l'unité utilisateur)
une dimension explicite, l'autre étant calculée automatiquement afin de respecter les proportions de l'image originale
aucune dimension explicite, auquel cas l'image est dimensionnée en 72 dpi
Les formats supportés sont le JPEG, le PNG et le GIF. Le GIF nécessite l'extension GD.

Pour le JPEG, toutes les variantes sont autorisées :
niveaux de gris
couleurs vraies (24 bits)
CMYK (32 bits)
Pour le PNG, sont autorisées :
les images en niveaux de gris sur 8 bits au plus (256 teintes)
les images en couleurs indexées
les images en couleurs vraies (24 bits)
mais ne sont pas supportés :
L'interlacement
L'alpha channel
Pour le GIF : en cas de GIF animé, seule la première image est utilisée.

Si une couleur transparente est définie, elle est prise en compte.

Le format peut être spécifié explicitement ou bien déduit de l'extension du fichier.
Il est possible de mettre un lien sur l'image.

Remarque : si une image est utilisée plusieurs fois, une seule copie est intégrée au document.
Paramètres
file
Chemin ou URL de l'image.
x
Abscisse du coin supérieur gauche. Si non précisée ou égale à null, l'abscisse courante est utilisée.
y
Ordonnée du coin supérieur gauche. Si non précisée ou égale à null, l'ordonnée courante est utilisée ; de plus, un saut de page est d'abord effectué si nécessaire (en cas de saut de page automatique) ; puis, après l'appel, l'ordonnée courante est positionnée en bas de l'image.
w
Largeur de l'image dans la page. Si elle n'est pas indiquée ou vaut zéro, elle est calculée automatiquement.
h
Hauteur de l'image dans la page. Si elle n'est pas indiquée ou vaut zéro, elle est calculée automatiquement.
type
Format de l'image. Les valeurs possibles sont (indépendamment de la casse) : JPG, JPEG, PNG et GIF. S'il n'est pas précisé, le type est déduit de l'extension du fichier.
link
URL ou identifiant retourné par AddLink().
/////////////////////////////////////////////////////////////////////////

"Je ne comprend pas bien, la fonction image() attend en argument un "string" qui contient le chemin ou l'URL de l'image?"
C'est plus ou moins la même chose, et les deux sont acceptés.

"Donc si la variable $commentaire contient l'URL de l'image, ça devrait marcher (en faisant attention au "'")?"
Je suis d'accord avec vous, mais j'ai bo essayer y a rien à faire !

Peut-être faudrait-il découper le commentaire au niveau des balises les ajouter avec la fonction Cell() et insérer les images entre d'eux?
Peut-être mais je ne vois pas trop comment prodécé, pouvez-vous m'aider ?

Merci pour vos réponses,
Cordialement,
Sub_Mat
vendredi 19 février 2010 à 09:12:29 | Re : Problème avec la fonction preg_replace

seblechinois

Réponse acceptée !
Bonjour,

Il y a surement mieux, mais l'idée est là :

Code PHP :
//Commentaire extrait de la base
$commentaire="toto [img]toto.jpg[/img] et tutu";

//Découpage du commentaire au niveau des balises [img]
$tab = preg_split("/\[img\]/",$commentaire);

//Parcours du tableau
foreach ($tab as $value) {

	//Si il y a la balise [/img]
	if( preg_match("/\[\/img\]/", $value)){

		//Découpage du texte au niveau de la balise [/img]
		$tab2=preg_split("/\[\/img\]/",$value);

		//Ajout de l'image (texte avant la balise)
		this->Image($tab2[0]);

		//Ajout du texte après la balise avec cell
		this->Cell($tab2[1]);

	}else{

                //Ajout du text s'il n'y a pas de balise
		this->Cell($value);
		
	}
}


ce qui donne :
- toto
Ajout avec cell()

- toto.jpg[/img] et tutu
Ajout de l'image: toto.jpg
Ajout avec Cell: et tutu

J'espère que ça va pouvoir vous aider!
Avez-vous essayer de mettre le chemin relatif au lieu de l'URL?

S.
vendredi 19 février 2010 à 11:51:49 | Re : Problème avec la fonction preg_replace

Sub_Mat

Bonjour seblechinois,

Un grand merci pour vos réponses !
Mais lorsque je place votre code dans ma page php,
il me retourne ce message d'erreur :

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /mnt/102/sda/4/6/monsite/mapage.php on line 221

La ligne en question est celle-ci :

Code PHP :
this->Image($tab2[0]);


J'ai essayé ceci :

Code PHP :
this->Image("'".$tab2[0]."'");


Mais ça ne change rien
Avez-vous une idée pour résoudre ce problème ?

Encore merci pour vos réponses,
Cordialement,
Sub_Mat
vendredi 19 février 2010 à 12:15:00 | Re : Problème avec la fonction preg_replace

seblechinois

Réponse acceptée !
Re,

essayez :
$this->Image($tab2[0]);

S.
vendredi 19 février 2010 à 19:17:17 | Re : Problème avec la fonction preg_replace

Sub_Mat

Un grand Merci à tous les deux !
C'est bon ça fonctionne !
Dommage que "fpdf" n'accepte pas les images transparentes !
Encore merci !
Cordialement,
Sub_Mat


Cette discussion est classée dans : fonction, code, image, img, commentaire


Répondre à ce message

Sujets en rapport avec ce message

image redim [ par michmichman ] Bon voila j'ais pris sur ce site un petit code pour redimennsioner une image alors j'arrive très bien a afficher l'image comme je le souhaite avec les A propos des images GD [ par ckhalilo ] j'ai un problème d'integration des image dans un formulaire, pour eviter l'envoie automatique dans mon formulaire bref mon problème est le suivant qu Problème d'affiche d'images dans un tableau [ par Moritus ] Bonjour, Je ne sais pas si c'est un problème php ou html mais vu que mon script est en php je me risque voila.. mon code détermine le chemin d'une im affichage d'une image lors d'un passage sur un lien [ par gabi1202 ] Voilà je suis occuper à essayer de faire un genre de petit catalogue en php donc j'affiche mes images avec une pagination (2 image par page) en dess Affichage img avec variable [ par sly456328971 ] Bonjour, je cherche à afficher une image dont le chemin est une variable sans succès : [code=php] $rep = '/var/www'; $img = $rep."/".'images'."/"; e fonction pour redimensionner des images de grande taille [ par oceanrider ] Bonjour à tous, Je me tourne vers vous car malgré mes recherches, je ne trouve pas de solution à mon problème. J'ai recours à une fonction pour redi Comment afficher une image stocké dans la base de données?? [ par djibidl ] Bonjour, Je réalise un tp dans lequel je dois manipuler des images jpeg et gif. La démarche pour l'insertion marche b1. Elle est fait avec un formulai La fonction SUM [ par stealon ] Je n'arrive pas à avoir le résultat escompté avec la fonction SUM de SQL dans une requête genre: [code=php]$sql = mysql_query("SELECT SUM(Recette) AS CSS : Background-repeat ne marche pas avec IE [ par mrassaa ] Salut, J'ai créé un formulaire avec php. Dans la qui contient mon formulaire, j'ai mis une image qui doit se répéter qu'une seule fois. Grâce à Back Librairie GD [ par ICIoBRa ] Salut à tous, j'essaye d'utiliser la fonction imagecopymergegray sans succès. J'ai une page vide avec ce code : [code=php]$dest = imagecreatefrompn


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales