Zapis do pliku php

0

Witam. Mam taką sprawę.

posiadam plik lang.php
Struktura:

 
<?php

$text['pl']['lang1'] = 'jakiś tekst';
$text['en']['lang1'] = 'jakiś tekst - en';

$text['pl']['lang2'] = 'jakiś';
$text['en']['lang2'] = 'jakiś - en';

$text['pl']['lang3'] = 'tekst';
$text['en']['lang3'] = 'tekst - en';

?>

Pobieram sobie ładnie te dane, pakuje do "input'ów" i dalej mam problem. ;/
Mianowicie nie wiem w jaki sposób przy zapisie znaleźć daną linijkę (np. $text['en']['lang1'] = 'jakiś tekst - en';) i w miejscu '...' - podstawić nowy tekst.

Mógłby mnie ktoś ukierunkować w jaki sposób to zrobić. Ew. jeśli był by jakiś przykład będę wdzięczny.

0

Robisz źle. Powinieneś dane przechowywać w bazie danych, ewentualnie w jakimś pliku xml.

0

Niestety odgórnie miałem już ustalony taki plik.
Jednakże teraz chcą edytować taki plik i zastanawiam się jak najlepiej to zrobić. Chodzi o to, aby jak najmniejszym nakładem pracy jakoś rozwiązać ten problem.

0

Odgórnie? Powiedz temu wyżej, że jest idiotą i zrób tak, jak mówię. Na siłę można użyć wyrażeń regularnych, ale to jest chyba najgorsze możliwe rozwiązanie.

0

Przechowywanie takich danych w pliku wcale nie jest czymś złym. Z tej metody korzystają frameworki CodeIgniter oraz FuelPHP (z tymi pracuję).
Możesz podejrzeć kod tych frameworków i zobaczyć, jak to jest zorganizowane w nich. Najlepiej będzie dla każdego języka stworzyć osobny plik (w sumie nie wiadomo jak masz zorganizowaną aplikację).
Dla przykładu plik pl.php:

<?php
return array(
        'lang1' => 'jakiś tekst',
        'lang2' => 'jakiś',
        'lang3' => 'tekst'
);

Jak to robi FuelPHP (poglądowo):

<?php
class Lang
{
        /**
         * Zawartosc pliku
         */
        private static $lang = array();

        public static function load($langname)
        {
                //wczytanie pliku i wrzucenie zawartosci do self::lang
        }

        public static function get($key)
        {
                return isset(self::$lang[$key]) ? self::$lang[$key] : null;
        }

        public static function set($key, $value)
        {
                self::$lang[$key] = $value;
        }

        public static function save()
        {
                $content = "<?php\n";
                $content .= "return array(\n";
                $content .= str_replace(" ", "\t", var_export(self::$lang));
                $content .= ');';
                //zapisanie do pliku
        }
}

Co do znalezienia linijki... Takie szukanie jest masochizmem, lepiej wczytać cały plik co tablicy a następnie całą tablicę zapisać do pliku. Odsyłam do w.w. frameworków po więcej.
Wszystko pisane na szybko, może nie trzymać się kupy ;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1