Salut à tous,
J'ai un petit problème...
J'ai créé un site multilingue qui inclus des fichiers de langues selon celle choisi (lang_fr.php, lang_en.php...) et chaque fichier contient des variables PHP.
Jusqu'ici tout va bien.
J'ai créé un espace administration qui permet à l'admin de modifier les valeurs de ces constantes (pour la traduction par exemple).
Pour cela j'utilise une grosse classe "fichier"...
Le code de ma fonction de modification est le suivant :
Code :
- function modifier_ligne_numero($num, $val){
- $fichier = fopen($this->chemin, "r+" ); // Ouverture du fichier en lecture/écriture
- $string = "";
- $txt = "";
- $tmp=$this->lit_ligne($num); // Texte avant
- $delta = $this->compte_nb_caractere($tmp) - $this->compte_nb_caractere($val);
- for ($i = 1; $i<$num; $i++) // On se place directement à la ligne souhaitée
- $string .= fgets($fichier);
- $constante = $this->donne_constante(fgets($fichier));
- $string .= "define (\"" . $constante . "\", \"" . $val . "\" );\n";
- while (!feof($fichier))
- $string .= fgets($fichier);
- fseek($fichier, 0); // va au début du fichier
- fputs($fichier, $string);
- if ($delta > 0){
- for ($i=0; $i<=$delta+1; $i++)
- fputs($fichier, "" );
- }
- fclose($fichier);
- }
|
Lorsque l'on remplace la valeur d'une constante par une autre plus importante => pas de problèmes
Par contre si ce que l'on remplace contient moins de caractères, à la fin de mon fichier, il y a les anciens caractères (qui ne s'effacent pas)...
Pour éviter cela, je rajoute des espaces à la fin de mon fichier.
Le fichier PHP pose alors problème, mon index (qui inclut les fichiers langues) n'aime pas trop les espaces :
Code :
- Warning: Cannot modify header information - headers already sent by (output started at ***\LANGUES\lang_fr.php:115) in ***\index.php on line 22
- ...
|
Aidez-moi svp...
---------------
Achats-Ventes -- feedback