Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1543 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème interprétation entre php et fpdf

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème interprétation entre php et fpdf

n°1884706
axelandre
Posté le 14-05-2009 à 18:55:48  profilanswer
 

Bonjour,
 
Je planche sur un problème et je n'arrive pas à trouver la solution.
 
en fait j'ai un formulaire avec des textarea dont le nombre de caractère est limité à 470. Ensuite lors de la soumission, un pdf est créé avec les données renseignées.
 
Le problème c'est que si l'utilisateur à fait un retour chariot et bien cela casse mon pdf. En effet, chaque textarea est ensuite contenu dans un encadré sur le pdf. mais ces encadré ne se redimensionnent pas en fonction du contenu.  
 
Donc pour pallier à cela, j'ai donc limité le nombre de caractères et aussi interdit les retour chariot (touche ENTREE désactivée quand il y a focus sur un textarea).
 
Mais des utilisateurs ont contourné l'erreur en faisant plein d'espaces à la suite afin de retourner à la ligne ! Franchement, quelle idée, enfin bref.
 
Donc j'ai trouvé un script sur le net qui est censé mettre une limite de lignes dans le textarea (genre 4 lignes maimum) mais il ne fonctionne pas.
 
Du coup j'ai voulu contourner ce problème en cherchant dans la chaine, les doubles espaces pour les remplacer par un seul espace.
 
Le problème, c'est que si je fais un echo de la variable contenant la valeur du textarea, celui-ci affiche le contenu sans prendre en compte tous les espaces qui s'enchainent. Mais lors de la génération du pdf (avec fpdf), les espaces et donc retour à la lignes causés par ces derniers sont bel et bien présent et mon pdf se retrouve encore une fois cassé !
 
je ne voit pas comment fpdf peut interpreter ces espaces alors que la variable en ophp n'en contient pas.
 
Si quelqu'un a une solution à ce problème je suis preneur car c'est un module que j'ai créé pour ma boite et il y a cette erreur qui gache tout ! (bien que tout les commerciaux ne soient pas aussi gland que certains !)
 
merci à tous

mood
Publicité
Posté le 14-05-2009 à 18:55:48  profilanswer
 

n°1884708
deliriumtr​emens
sic transit intestinal...
Posté le 14-05-2009 à 19:13:16  profilanswer
 

Ben un echo ça va te donner (probablement dans ta manière de tester) du html... où les espaces ne sont pas pris en compte lorsqu'ils sont supérieurs à 1. Donc ce n'est pas parce que tu ne les vois pas à l'écran qu'ils n'existent pas !
Un strlen permettrait de vraiment savoir le nombre de caractères que contient ta variable (mais bon je suppose que tu t'en doutes).
 
2 solutions :  
- soit une boucle ou regexp qui remplace les espaces > 1.
- soit, si la redimension des cadres est possible (point de vue mise en page, pas technique), regarder un peu en détail la doc / l'aide de fpdf, tu peux faire des MultiCell qui se dimensionnent en fonction du nombre de caractères / de la police, c'est pas très compliqué, et tu trouveras tous les exemples qu'il te faut sur le site.
 
Edit : en plus, si le redimensionnement est possible, tu peux remettre les retours chariots, ce genre de blocage ne doit pas être très évident pour tous tes utilisateurs... Mais bon je ne connais pas tes contraintes.


Message édité par deliriumtremens le 14-05-2009 à 19:16:23
n°1884781
axelandre
Posté le 15-05-2009 à 01:01:59  profilanswer
 

merci pour cette réponse deliriumtremens.
 
Alors en fait si j'ai rendu fixe les encadrés c'est tout simplement pour que le pdf généré tienne sur une seule page. D'où toutes ces contraintes en fait. Donc tu me conseilles de faire un regex qui contrôle si il existe des espaces à la sute et de les remplacer par un seul espace ? J'ai essayé avec srtrt mais cela ne fonctionne pas... penses-tu que cela pourrait fonctionner avec un regex ?
 
je vais tenter ça demain matin et je te tiens au courant .
 
merci encore pour tes propositions
 

n°1884836
olivthill
Posté le 15-05-2009 à 09:48:52  profilanswer
 

Essayer :

 // Remplacer les nbsp par des espaces
  $s = str_replace("\xA0","",$s);
 
  // Remplacer les espaces consécutifs par un seul espace
  $s = str_replace("  "," ",$s);

n°1884876
axelandre
Posté le 15-05-2009 à 10:36:07  profilanswer
 

Salut les gars !
 
Bon alors j'ai essayé avec tes méthodes olivthill mais malheureusement infructueuses mais merci d'avoir proposé des choses.
 
Du coup je me suis tourné vers les regex comme me l'a conseillé deliriumtremens et ça a payé !
 
Voici la regex qui transforme une succession d'espace en un seul espace :  
 
$chaine = preg_replace('/[\s]+/',' ',$chaine);
 
Merci à vous deux pour votre aide.
 
J'espère que ce bon de code dérisoir servira à d'autre !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème interprétation entre php et fpdf

 

Sujets relatifs
Problème avec un menu déroulant qui s'ouvre au chargement[Besoin d'aide]: Problème de jQuery
Problème d'insertion en tableProblème lors de la création d'une application RPC
Problème vérification format champsprobleme d'envoi de message
Probleme de type avec OCaml[VB.Net Express 2008] Problème debugger
[VBA] Problème double macroProblème balise object
Plus de sujets relatifs à : Problème interprétation entre php et fpdf


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR