Eliminer des exemples autour d'un caractère précis

Eliminer des exemples autour d'un caractère précis - PHP - Programmation

Marsh Posté le 23-10-2002 à 17:08:09    

Pour mon site, j'utilises un système de template qui lit un fichier contenant un modèle d'affichage.
Je découpes ensuite ce modèle en plusieurs partis distinctes que je mets dans plusieurs variables.
Le problème, c'est que dans plusieurs de ces variables, je me retrouves avec un grand nombre d'espaces qui n'auront aucune incidence dans l'affichage final. Je voudrais donc les éliminé.
 
Par exemple, voilà une des variables que j'obtiens après la division du fichier en plusieurs parties :
 

Code :
  1. $mod_page="<HTML>
  2.   <HEAD>
  3.     <#REFRESH>
  4.    
  5.   </HEAD>
  6.   <BODY bgcolor=\"#336698\" link=\"#2222FF\" vlink=\"#2222FF\">
  7.     <CENTER>
  8.     <#ZONE1>
  9.     </CENTER>
  10.   </BODY>
  11. </HTML>
  12. ";


 
Ce que je voudrais obtenir, c'est
 
$mod_page="<HTML><HEAD><#REFRESH></HEAD><BODY bgcolor=\"#336698\" link=\"#2222FF\" vlink=\"#2222FF\"><CENTER><#ZONE1></CENTER></BODY></HTML>";
 
Bref, je voudrais éliminer les retours à la ligne et les espaces qui les entourent sans pour autant les enlever du modèle de départ (plus facile à débuguer un nouveau modèle quand on a une présentation hiérarchique).
 
Merci d'avance.
 
PS : L'exemple que j'ai utilisé la provient d'un des fichiers .php3 créé automatiquement a partir d'un des modèles pour remplacer une lecture de fichier + traitement par un include.

Reply

Marsh Posté le 23-10-2002 à 17:08:09   

Reply

Marsh Posté le 23-10-2002 à 17:14:39    

Une solution rapide qui me vient à l'esprit c'est : tu fais un explode() sur les \n puis tu trimes chaque token. En gros :

Code :
  1. $tableau = explode("\n", $mod_page);
  2. foreach($tableau as $mot)
  3. {
  4.   $new_mod_page = $new_mod_page.trim($mot);
  5. }


Message édité par Taiche le 23-10-2002 à 17:15:02

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 23-10-2002 à 17:14:40    

Pô compris... Tu veux ôter les retours à la ligne tout en les conservant pour que ce soit plus lisible? :??:

Reply

Marsh Posté le 23-10-2002 à 17:15:55    

un exemple (edit... oups trop tard :D):
$string= explode('\n', $tring);
for ($i=0, $max=count($string); $i++){
  $return_string.= trim($string[$i]);
}
 
un autre:
$string= str_replace(' ','',$string);
$string= str_replace('chr(10),'',$string);


Message édité par ethernal le 23-10-2002 à 17:16:25

---------------
...oups kernel error...
Reply

Marsh Posté le 23-10-2002 à 17:20:35    

Huhu :D Copain, ethernal :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 23-10-2002 à 17:45:16    

Toucouch a écrit a écrit :

Pô compris... Tu veux ôter les retours à la ligne tout en les conservant pour que ce soit plus lisible? :??:



Je veux les garder au niveau du modèle mais ne plus les avoir au niveau du navigateur.
Ainsi, en mode normal, la récupération des pages est moins longues ce qui joue quand on a un simple modem et en mode débuguage d'un modèle je pourais toujours avoir la page avec tout les espaces (effacement ou non effacement des espaces en fonction d'une variable) pour avoir une présentation du code résultat facile à lire.
 
taiche > Ca m'a l'air une très bonne idée ça, j'avais pas pensé à utiliser la fonction exclude. :)
 
ethernal > Le second exemple marchera pas, j'obtiendrais

Code :
  1. mod_page="<HTML><HEAD><#REFRESH></HEAD><BODYbgcolor=\"#336698\"link=\"#2222FF\"vlink=\"#2222FF\"><CENTER><#ZONE1></CENTER></BODY></HTML>";


 
J'ai mis en gras, la partie qui poserait problème (je penses que la balise BODYbgcolor ne serait pas compris comme il faut par un navigateur)
 
Bon, après lecture des trois proposition, je vais utiliser la première d'ethernal vu qu'elle marche surement très bien et qu'elle est pas limité à php4.

Reply

Marsh Posté le 23-10-2002 à 21:13:45    

un truc que je comprends pas :
comment ça se fait que tu travailles avec des templates et que tu as un $mod_page="html blabla";
 
c'est après chargement du template ?
ou bien ce sont tes templates?


---------------
...oups kernel error...
Reply

Marsh Posté le 23-10-2002 à 23:31:36    

ethernal a écrit a écrit :

un truc que je comprends pas :
comment ça se fait que tu travailles avec des templates et que tu as un $mod_page="html blabla";
 
c'est après chargement du template ?
ou bien ce sont tes templates?



C'est après chargement du template.
Comme je trouvais le traitement trop long, j'ai modifié le système pour sauter l'étape de chargement/prétraitement du modèle en incluant directement les variables avec les bonnes valeurs dans le source.
Mais bon, ca reste quand même un système de template (pour ce que j'ai compris aux templates. ;) )

Reply

Marsh Posté le 23-10-2002 à 23:48:32    

ok :) merci pour la petite explication  :hello:


---------------
...oups kernel error...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed