Remplacer une ligne dans un fichier
Résolu
regitraz
Messages postés
89
Date d'inscription
Statut
Membre
Dernière intervention
-
regitraz Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
regitraz Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Alors j'ai fait un site multilingues grâce a des fichier php contenant tout les texte du site dans un tableau associatif :
Et donc je veut faire un ajout automatique de langue. Pour cela je commence par copier-coller / renomer le fichier de langue de base, et ensuite je voudrait effacer le contenu de chaque occurrence du tableau pour avoir quelque chose du genre (avec les retour a la ligne) :
Puis les remplacer par les nouveaux textes, dans la nouvelle langue. Par la suite il sera possible de ne modifier qu'une seule ligne de ce fichier de langue, afin de modifier les textes du site.
Pour l'instant j'ai essayer ca :
Et une version de ce code utilisant la fonction file() et des tableaux, et la fonction implode, mais il n'y avait pas de retour a la ligne.
merci d'avance pour votre aide
Alors j'ai fait un site multilingues grâce a des fichier php contenant tout les texte du site dans un tableau associatif :
$lang["menu_AC_prochaine"] = "PROCHAINES ACTIVITÉS ET RENCONTRES"; $lang["menu_ART"] = "SUJETS ET ARTICLES"; $lang["menu_dev_initiative"] = "DÉVELOPPEMENT DE L'INITIATIVE"; $lang["menu_co"] = "CONNEXION"; etc
Et donc je veut faire un ajout automatique de langue. Pour cela je commence par copier-coller / renomer le fichier de langue de base, et ensuite je voudrait effacer le contenu de chaque occurrence du tableau pour avoir quelque chose du genre (avec les retour a la ligne) :
$lang["menu_AC_prochaine"] = ""; $lang["menu_ART"] = ""; $lang["menu_dev_initiative"] = ""; $lang["menu_co"] = "";
Puis les remplacer par les nouveaux textes, dans la nouvelle langue. Par la suite il sera possible de ne modifier qu'une seule ligne de ce fichier de langue, afin de modifier les textes du site.
Pour l'instant j'ai essayer ca :
$file = fopen("modele/langue/$_POST[acronyme].php", "r+"); while ($row = fgets($file,2048)) { $avant = $row; $res = explode("=", $row); $apres = $res[0]."=\"\""; str_replace($avant, $apres, $file); }
Et une version de ce code utilisant la fonction file() et des tableaux, et la fonction implode, mais il n'y avait pas de retour a la ligne.
merci d'avance pour votre aide
A voir également:
- Remplacer une ligne dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je ne suis pas certain d'avoir compris pourquoi tu faisais cela, et cela me semble une façon très complexe de faire un site multilingue.
as-tu une question?
as-tu une question?
J'ai reussit a faire fonctionner la version avec la fonction file() comme voulut :
Y a-t-il une solution moin gourmande en ressources du serveur ?
$content = file("modele/langue/$_POST[acronyme].php"); $text = array(); array_push($text, "<?php \n"); foreach($content as $row){ $res = explode("=", $row); if(count($res) > 1) array_push($text, $res[0]." = \"\";\n"); } $file = fopen("modele/langue/$_POST[acronyme].php", "w"); fwrite($file, implode($text)); fclose($file);
Y a-t-il une solution moin gourmande en ressources du serveur ?
Bonjour,
Oui, ne serait-ce qu'utiliser un fichier JSON pour stocker tes infos et y accéder plus facilement pour les modifier...
Création des variables à stocker dans le json
Remise à zéro des variables (si besoin...)
</code>
Accéder aux valeurs du fichier :
Après.. certains CMS utilisent des fichiers CSV pour stocker les données... mais le principe reste assez identique à ce que tu as trouvé comme code.. à coup d'explode et de join... C'est lourd.....
Au moins.. avec le format json tu peux soit l'utiliser directement en tant qu'objet.. soit le transformer facilement en array comme je te l'ai montré....
Oui, ne serait-ce qu'utiliser un fichier JSON pour stocker tes infos et y accéder plus facilement pour les modifier...
Création des variables à stocker dans le json
$lang = array(); $lang["menu_AC_prochaine"] = "PROCHAINES ACTIVITÉS ET RENCONTRES"; $lang["menu_ART"] = "SUJETS ET ARTICLES"; $lang["menu_dev_initiative"] = "DÉVELOPPEMENT DE L'INITIATIVE"; $lang["menu_co"] = "CONNEXION"; etc... // Ecriture du fichier $file = fopen("modele/langue/".$_POST['acronyme'].".json", "w"); fwrite($file, json_encode($lang)); fclose($file);
Remise à zéro des variables (si besoin...)
$lang_vide = array(); foreach($lang as $K => $V){ $lang_vide[$K] = ""; } // Ecriture du fichier $file = fopen("modele/langue/".$_POST['acronyme'].".json", "w"); fwrite($file, json_encode($lang_vide)); fclose($file);
</code>
Accéder aux valeurs du fichier :
$json = file_get_contents("modele/langue/".$_POST['acronyme'].".json"); $lang =!empty($json) ? json_decode($json,true) : array(); // retransforme le json en array... // ensuite, tu peux accéder aux valeurs de ton array (ça je pense que tu sais faire... ) // par exemple , afficher menu_ART echo !empty($lang['menu_ART']) ? $lang['menu_ART'] : ""; // affiche la valeur si elle existe.. sinon rien...
Après.. certains CMS utilisent des fichiers CSV pour stocker les données... mais le principe reste assez identique à ce que tu as trouvé comme code.. à coup d'explode et de join... C'est lourd.....
Au moins.. avec le format json tu peux soit l'utiliser directement en tant qu'objet.. soit le transformer facilement en array comme je te l'ai montré....
Sinon il y a quoi comme solutions pour faire un site multilingue ?
souhaites-tu que nous fassions le travail à ta place?
le code que tu nous montres ne fait-il pas ce que tu attends? souhaites-tu l'améliorer? explique-nous.
moi je ferais plutôt ainsi:
pourrais-tu aussi nous expliquer comment tu prévois d'utiliser le fichier php?
quel est le contexte de cet exercice?
L'idée c'est de faire un espace administrateur qui peut ajouter / modifier des langue (ou les textes).
le code que j'ai donné ne fonctionne pas, et j'aimerai le faire fonctionner / l'améliorer