Mam kolejny problem Chłopaki Dużo wykonuje działań na plikach i chcę wiedzieć wiele rzeczy, ale czasami stoję w martwym punkcie. Teraz chciałabym znaleźć w tekście, który jest zapisany w pliku konkretną frazę. Dajmy na to, że fraza ta to "YEAH". Potem tą frazę chciałabym zamienić i zapisać plik bez zmian, to znaczy, żeby mi zamieniło znaleziony tekst, zamieniło go na taki jaki chce i zapisało plik bez utraty reszty tekstu, który w tym pliku jest zapisany
Fiu mam nadzieję, że mnie zrozumiano, bo trochę się napisałam
Lubię porządek i mam już spory początek kodu PHP w technologii EC:
$amy_text = "YEAH"; $amy_text_change = "Yeah"; $amy_file = http://www.php.net/file("date.txt"); // Pokaż prawdziwość kiedy tekst var("amy_text") jest znaleziony $amy_found = false; foreach($amy_file as $amy_line) { if (http://www.php.net/strpos($amy_line, $amy_text) !== false) { $amy_found = true; // Otwórz plik do odczytu i modyfikuj $amy_mod_file = "date.txt"; $amy_check_file = http://www.php.net/fopen($amy_mod_file, 'a'); $amy_data = http://www.php.net/fread($amy_check_file, http://www.php.net/filesize($amy_mod_file)); $amy_mod_end = $amy_data->$amy_text_change; http://www.php.net/fclose($amy_check_file); // Otwórz plik do zapisu $amy_check_file = http://www.php.net/fopen($amy_mod_file, 'a'); http://www.php.net/fwrite($amy_check_file, $amy_mod_end); http://www.php.net/fclose($amy_check_file); $amy_status = "Tekst został zmieniony."; http://www.php.net/print $amy_status; } } // Jeśli tekst nie został znaleziony wypisz komunikat if (!$amy_found) { $amy_status = "nie znaleziono i nie zamieniono tekstu."; http://www.php.net/print $amy_status; }
Ale po co jeszcze raz otwierasz plik? File tworzy tablicę. Jeśli w niej znajdziesz to podmień słowo w danej linii i na koniec masz tablicę do zapisu ponownego.
Przerobiłam trochę swój skrypt na taki:
$amy_text = "YEAH"; $amy_text_change = "Yeah"; $amy_file = http://www.php.net/file("date.txt"); // Pokaż prawdziwość kiedy tekst var("amy_text") jest znaleziony $amy_found = false; foreach($amy_file as $amy_line) { if (http://www.php.net/strpos($amy_line, $amy_text) !== false) { $amy_status = "Tekst został zmieniony."; $amy_found = true; $amy_mod_end = $amy_line->$amy_text_change; http://www.php.net/fwrite($amy_check_file, $amy_mod_end); http://www.php.net/fclose($amy_check_file); http://www.php.net/print $amy_status; } } // Jeśli tekst nie został znaleziony wypisz komunikat if (!$amy_found) { $amy_status = "nie znaleziono i nie zamieniono tekstu."; http://www.php.net/print $amy_status; }
<?php $file = 'dane.txt'; //sciezka do pliku $content = http://www.php.net/file_get_contents($file); //pobieranie zawartości pliku $content = \http://www.php.net/str_replace('YEAH', 'WOOOOOOW', $content); //zmieniamy YEAH na WOOOOOOW file_put_contents($file, $content);//zapisywanie nowe zawrtości do tego samego pliku
$amy_text = "/YEAH/ui"; $amy_text_change = "Yeah"; $amy_file = http://www.php.net/file("plik.txt", FILE_IGNORE_NEW_LINES); foreach($amy_file as &$amy_line) { $amy_line = http://www.php.net/preg_replace($amy_text, $amy_text_change, $amy_line); } http://www.php.net/unset($amy_line); file_put_contents('plik.txt', http://www.php.net/implode(PHP_EOL, $amy_file));
Dziękuję "aras785" za Twój przykład Działa dobrze
Dodałam do Twojego przykładu dyrektywe[count>0], aby mi wyświetlało komunikat, że zmieniono.
"Viking" Dziękuję za Twój kodzik z "tablicą", ale przykład "arasa785" jest, jakby to napisać, prosty Ja raczej nie używam tablicy na działaniach dotyczących plików, ponieważ w różnych plikach wykonuje różne skrypty, a tablica tylko mi wszystko pomiesza. Tablicę wykorzystuje wtedy jak chcę wprowadzić "obudowanie strukturalne", czyli dodatkowy kod do bardzo dużej ilości plików. Ale "Viking" Dziękuję Tobie za uwagi i za to, że podzieliłeś się swoim kodem
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)