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
Michael2318
post
Post #2





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

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


Pewnie, już daję.
Tutaj jest cały plik: http://www.wklej.org/id/937494/
A szukane fragmenty:

  1. $find[1] = '<td class="catHead" colspan="7" height="28"><span class="cattitle">&nbsp;{L_REGIST_TITLE}</span></td>';
  2. $replacement[1] = '<td class="catHead" colspan="9" height="28"><span class="cattitle">&nbsp;{L_REGIST_TITLE}</span></td>';
  3. $find[2] = '<td nowrap class="row1" align="left" valign="middle">';
  4. $replacement[2] = '<td nowrap class="row1" align="left" valign="middle" colspan="3">';
  5. $find[3] = '<td class="row1" align="left" valign="middle"><input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:120px" name="email" size="25" maxlength="255" value=""></td>';
  6. $replacement[3] = '<td class="row1"><input type="text" class="post" style="width:120px" name="email1" size="25" maxlength="200" value="" /></td>'."\n".'<td class="row1"><span class="genmed">@</span></td>'."\n".'<td class="row1"><input type="text" class="post" style="width:120px" name="email2" size="25" maxlength="200" value="" /></td>';


Trzeci find i replace się zamieniają, 1 i 2 już nie. Podmieniłem wszędzie na $old_data.

EDIT:

Działa ! Dzięki (IMG:style_emoticons/default/exclamation.gif)

I jeszcze tak na przyszłość - co jeśli będę chciał znaleźć np ten fragment:

Kod
  <tr>
   <td class="row1"><span class="gen">{BOARD_MSG}</span></td>
  </tr>


Tam są białe znaki wcześniej, odstępy (\n) i inne wianki :/

Ten post edytował Michael2318 25.01.2013, 15:09:18
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: 14.10.2025 - 10:17