Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> str_replace, zamiana w plikach, tabulatory i nowe linie
daris
post 3.02.2008, 16:58:03
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

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


Mam taki sktypt:
  1. <?php
  2. if (strpos($file, $find) != false)
  3.  $file = str_replace($find, $code, $file);
  4. else
  5.  $error = $lang['Text not found'];
  6. ?>

który dokonuje zamiany tekstu ($find) na inny ($code) w otwartym pliku ($file). I teraz wszystko działa dobrze dopóki w tekście do znalezienia ($find) nie znajdą się nowe linie (w sumie to nie wiem czy problemem są nowe linie czy tabulatory). "Wyechowanie" tego tekstu w <pre> pokazuje wszystkie linie i tabulatory normalnie. Do wczytywania pliku używam file_get_contents a do zapisywania file_put_contents.

edit: Dopiero teraz się przyjrzałem i dochodzę do wniosku że to jednak nie str_replace może być powodem a raczej strpos, bo wyrzuca tego errora że tekst nie znaleziony (czyli idzie przez "else" tongue.gif ).

Ten post edytował daris 3.02.2008, 17:01:53


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
daris
post 3.02.2008, 17:52:06
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

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


Cytat(nowotny)
zapodaj też wartości zmiennych $file i $find...

Z tym to będzie raczej problem bo to leci przez pętelkę biggrin.gif

To jest fragment pliku:
  1. <?php
  2. #
  3. #---------[ 4. OPEN ]---------------------------------------------------------
  4. #
  5.  
  6. header.php
  7.  
  8.  
  9. #
  10. #---------[ 5. FIND (line: 176) ]---------------------------------------------
  11. #
  12.  
  13. else
  14. $tpl_temp .= "\n\t\t\t".'</ul>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>';
  15.  
  16. #
  17. #---------[ 6. BEFORE, ADD ]--------------------------------------------------
  18. #
  19.  
  20. // MOD: MARK TOPICS AS READ - 2 LINES NEW CODE FOLLOW
  21. else if (basename($_SERVER['PHP_SELF']) == 'viewforum.php')
  22. $tpl_temp .= '</ul>'."\n\t\t\t".'<p class="conr"><a href="misc.php?action=markforumread&id='.$id.'">'.$lang_common['Mark forum as read'].'</a></p>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>';
  23.  
  24. #
  25. #---------[ 7. OPEN ]---------------------------------------------------------
  26. #
  27.  
  28. include/functions.php
  29. ?>

który parsuję wyrażeniami regualrnymi po kolei (numerkami), i każda "akcja" zostaje wykonywana. Wszystko działa dobrze dopóki w wykonywanym fragmencie (tylko FIND) nie znajdzie się więcej jak jedna linia (ale jak "wyechuje" fragment w <pre> to tekst zawiera i tabulatory i nowe linie).

edit: W powyższym przykładzie możliwe że te \n\t... też przeszkadzają, ale dalej jak nie ma \n\t też nie działa (tylko wtedy kiedy jest więcej niż jedna linia)


edit2: To wyrażenie regularne nie za każdym razem chce działać (na niektórych plikach działa a na niektórych nie):
  1. <?php
  2. preg_match("/#-*[.$i..([A-Z,s*/]*)..*].*s#s*(([^#].*\n)*)s*#/", $install, $section);
  3. $type = trim($section[1]);
  4. $code = trim($section[2]);
  5. ?>


Ten post edytował daris 3.02.2008, 18:11:37


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 20:02