Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Działania na plikach
alkesz1718
post 1.05.2015, 22:24:36
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

Ostrzeżenie: (0%)
-----


Witam, kolega ma taki malutki problem a mianowicie za pomocą pliku php (instalacyjnego) chciał aby w danym pliku (przykładowo pod nazwą: mój_plik.php) odnalazło przykładowo taki kod:
  1. $txt = str_replace( "</code></pre>", '[/code]', $txt );


po czym zmieniło go na taki:
  1. $txt = str_replace( "</codex></prec>", '[/codex]', $txt );


i zapisało plik nie naruszając innych treści jakie są w pliku ale nie wie jakiego kodu użyć do tego.

Ja mu nie mogę pomóc bo sam nwm jak to zrobić więc piszę tutaj

Ten post edytował alkesz1718 1.05.2015, 22:25:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Raito
post 2.05.2015, 07:31:33
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 19
Dołączył: 27.04.2014

Ostrzeżenie: (0%)
-----


Można wczytać plik do tablicy, użyć pętli foreach i wyszukać ciąg znaków, po czym go zamienić.
Go to the top of the page
+Quote Post
alkesz1718
post 4.05.2015, 14:19:22
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

Ostrzeżenie: (0%)
-----


a można prosić o jakiś wzór takowego kodu??
Go to the top of the page
+Quote Post
sadistic_son
post 5.05.2015, 11:02:44
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Moim zdaniem najprościej będzie tak:
  1. $plik="mój_plik.php";
  2.  
  3. $zawartosc=file_get_contents($plik); //wczytaj zawartosc pliku mój_plik.php do zmiennej $zawartosc jako tekst
  4.  
  5. $co_znalezc='$txt = str_replace( "</code></pre>", '."'[/code]'".', $txt );'; // takie rozdzielenie tego tekstu jest konieczne ze zwgledu na wystepowanie w nim roznych cudzyslowow ( zarówno ' jak i " )
  6.  
  7. $na_co_zamienic='$txt = str_replace( "</codex></prec>", '."'[/codex]'".', $txt );';
  8.  
  9. $nowa_zawartosc=str_replace($co_znalezc,$na_co_zamienic,$zawartosc); //w $zawartosc zamien $co_znalezc na $na_co_zmienic i wczytaj do $nowa_zawartosc
  10.  
  11. file_put_contents($plik,$nowa_zawartosc); //zapisz do pliku $plik to co w zmiennej $nowa_zawartosc


Ten post edytował sadistic_son 5.05.2015, 11:07:46


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
alkesz1718
post 5.05.2015, 16:13:43
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

Ostrzeżenie: (0%)
-----


ok sprawdzę go smile.gif a jeszcze jak zrobić by sprawdzało czy poprawnie zapisano dany plik... tj. podczas instalacji chcę by przy tym zapisywaniu zawartości w nowych plikach potem pokazywało info czy zapisano poprawnie czy nie...

wcześniej miałem taki kod do zmieniania zawartości pliku:
  1. $zodziai4=array(
  2. ' array (
  3. \'name\' => $lang[\'opt_question\'],
  4. \'url\' => "$PHP_SELF?mod=question",
  5. \'mod\' => "question",
  6. \'access\' => "admin"
  7. )
  8. '=>' array (
  9. \'name\' => $lang[\'opt_question\'],
  10. \'url\' => "$PHP_SELF?mod=question",
  11. \'mod\' => "question",
  12. \'access\' => "admin"
  13. ),
  14. array (
  15. \'name\' => $lang[\'sound_conf\'],
  16. \'url\' => "$PHP_SELF?mod=sound",
  17. \'mod\' => "sound",
  18. \'access\' => "admin"
  19. )
  20.  
  21. ');
  22. $fai4='engine/skins/default.skin.php';
  23. foreach ($zodziai4 as $key => $value) {
  24. $redaguoti4 = @file_get_contents($fai4);
  25. $pakeista4=str_replace($key, $value, $redaguoti4);
  26. $failas4 = @fopen($fai4, "w+");
  27. fwrite($failas4, $pakeista4);
  28. fclose($failas4);
  29. }


oraz:

  1. $zodziai2=array(
  2. ' $txt = str_replace( "</code></pre>", \'[/code]\', $txt );
  3. '=>' $txt = str_replace( "</code></pre>", \'[/code]\', $txt );
  4. $txt = preg_replace( "#<!--dle_zs_begin:(.+?)-->(.+?)<!--dle_zs_end-->#is", \'[zs=\\1]\', $txt );
  5. $txt = preg_replace( "#<!--dle_hl_begin:(.+?)-->(.+?)<!--dle_hl_end-->#is", \'[hl=\\1]\', $txt );
  6. ');
  7. $fai2='engine/classes/parse.class.php';
  8. foreach ($zodziai2 as $key => $value) {
  9. $redaguoti2 = @file_get_contents($fai2);
  10. $pakeista2=str_replace($key, $value, $redaguoti2);
  11. $failas2 = @fopen($fai2, "w+");
  12. fwrite($failas2, $pakeista2);
  13. fclose($failas2);
  14. }


ten 1 kod się ładnie zainstalował i zapisało go bez zarzutów ale ten 2 już coś ma problemy i mi nie chce go zmieniać stąd też pytałem o jakiś łatwiejszy i skuteczny sposób na zmienianie zawartości...

Ale powracając do moego pytania to nawiązując do w/w kodów chcę by mi sprawdzało czy zapisały się poprawnie te pliki
Go to the top of the page
+Quote Post
salfunglandyare
post 5.05.2015, 20:36:11
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


Jesteś pewien że:
* szukana treść pokrywa się z tym, czego szukasz? np znak końca linii może być inny dla różnych systemów (\n, \r\n, \n\r'), tabulacje mogą być zamieniane na spacje i odwrotnie,
* skrypt ma uprawnienia do otwarcia pliku do zapisu?
Zamiast:
  1. $failas2 = @fopen($fai2, "w+");
  2. fwrite($failas2, $pakeista2);
  3. fclose($failas2);

daj
  1. if(($failas2 = fopen($fai2, "w+"))!==false){
  2. fwrite($failas2, $pakeista4);
  3. fclose($failas2);
  4. } else {
  5. die('Nie udało się zapisać pliku');
  6. }


Ten post edytował salfunglandyare 5.05.2015, 20:36:58
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 13:40