Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Automat do zamiany fragmentów kodów plikach
Michael2318
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Chcę zrobić sobie automat, który zamieni mi w wybranych plikach, wskazane fragmenty na nowe. Napisałem sobie 'coś', lecz niestety to w ogóle nie chce zamieniać podanych przeze mnie kodów.

Część odpowiedzialna za zamiane:

  1. $path = 'plik.tpl';
  2.  
  3. $find[1] = '<td class="catHead" colspan="7" height="28"><span class="cattitle">&nbsp;test</span></td>';
  4. $replacement[1] = 'test';
  5. $find[2] = '<td nowrap class="row1" align="left" valign="middle">';
  6. $replacement[2] = '<div id="costam">';
  7.  
  8.  
  9. $fp = fopen($path, "r");
  10. $old_data = fread($fp, filesize($path));
  11. fclose($fp);
  12. $not_replace = '';
  13. for($i = 1; $i <= 2; $i++)
  14. {
  15. $new_data = str_replace($find[$i], $replacement[$i], $old_data, $count);
  16. if ( $count == 0 )
  17. {
  18. $not_replace .= '<br><span style="color: red;">Nie zamieniono:<br><b>'.$find[$i].'</b> na:<br><b>'.$replacement[$i].'</b>';
  19. }
  20. }
  21. $fp = fopen($path.'index_body.tpl', "w");
  22. fputs($fp, $new_data);
  23. fclose($fp);
  24.  
  25. if ( $not_replace == '' )
  26. {
  27. echo 'Zamieniono poprawnie!';
  28. }
  29. else
  30. {
  31. echo $not_replace;
  32. }


Ktoś mi powie czemu to nie łapie? Rozumiem, gdyby były jakieś odstępy czy coś, ale póki co, to są pojedyncze linie kodów, więc nie rozumiem czemu to nie chce załapać.

EDIT:

Jak echuję strlen($old_data) przed i po zamianie to niby jest jakieś 100 znaków różnicy, ale te wskazane fragmenty nie są nadal zamienione.

Ten post edytował Michael2318 24.01.2013, 22:11:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze i najważniejsze:
nie:
$new_data = str_replace($find[$i], $replacement[$i], $old_data, $count);
a:
$old_data = str_replace($find[$i], $replacement[$i], $old_data, $count);

Przecież robisz to w petli, wiec musisz zawsze operować na tym samym zbiorze danych. Później do pliku też masz zapisać $old_data.


No i drugie najważniejsze: jesteś pewien na 100% ze szukane ciągi znajduję się w tym pliku? Dokładnie takie? Nie ma tam białych znaków, których nie widzisz? Daj nam lepiej do ściągnięcia ten plik
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 00:21