Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] string wyszukiwanie według wzorca i zamiana
Forum PHP.pl > Forum > Przedszkole
lopez86
próbuję znaleźć funkcję która umożliwiłaby mi wyszukanie w stringu np. wszystkiego co znajduje się pomiędzy znakiem "-" i stringiem "--" , następnie zamienić to na coś innego, w manualu znalazłem funkcję preg_match() ale nie za bardzo wiem jak to można zastosować na powyższym przykładzie. smile.gif

znalazłem też preg_replace()

http://pl2.php.net/preg_replace

są fajne przykłady ale nie za bardzo rozumiem co oznaczają konkretne znaki (pytajniki, małpa, i te znaczki ^ ] * i inne w poniższym przykładzie ,możecie mi objaśnć poszczególne znaki albo gdzie można znaleźć objaśnienie

W manualu niby jest to nabełkotane po angielsku ale nie wszystko i nie rozumiem co to dokładnie znaczy

  1. <?php
  2. $search = array ('@<script[^>]*?>.*?</script>@si', 
  3.  '@<[/!]*?[^<>]*?>@si',  
  4.  '@([rn])[s]+@',  
  5.  '@&(quot|#34);@i',  
  6.  '@&(amp|#38);@i',
  7.  '@&(lt|#60);@i',
  8.  '@&(gt|#62);@i',
  9.  '@&(nbsp|#160);@i',
  10.  '@&(iexcl|#161);@i',
  11.  '@&(cent|#162);@i',
  12.  '@&(pound|#163);@i',
  13.  '@&(copy|#169);@i',
  14.  '@&#(d+);@e');



Byłbym wdzięczny za przykład z powyższymi znakami czyli myślnikiem i dwoma myślnikami. Jarek

Ale jazda nikogo na forum nie ma z użytkowników jak słońce na polu świeci hehe , a ja tutaj w miejscu stoję tongue.gif
Ociu
To są wyrażenia regularne, więcej wie google.
  1. <?php
  2. preg_match_all('#-(*.)--#si', $string, $array);
  3. print_r($array);
  4. ?>

Dawno nie pisałem wyrażeń, ale jeśli dobrze pamiętam to tak powinno wyglądać.
lopez86
Dzięki, za przykład i za wyjasnienie że są to wyrażenia regularne , w google znalazłem krótki artykuł, jakby ktoś potrzebował, http://www.gajdaw.pl/php/wyrreg.html
Cet
Można też spróbować za pomocą funkcji php
  1. <?php
  2. /* polecam uzycie funkcji substr($string, $poczatek, $dlugosc);
  3. zwraca ona podciąg ciągu $string o dlugosci $dlugosc zaczynając 
  4. od znaku numer $poczatek*/
  5. $txt = "to jest tekst-to jego wycinek--a to tekst po wycinku";
  6. $start = strpos($txt, '-')+1; //pozycja znaku '-' + 1 (dlugosc znaku)
  7. $dlugosc = strpos($txt, '--')- $start; //obliczamy dlugosc szukanego podciagu
  8. echo substr($txt , $start, $dlugosc);
  9. ?>


jeśli to się nie nadaje to proszę mnie poprawić dopiero zaczynam zabawę z php
lopez86
próbuje coś takiego i nie działa

  1. <?php
  2.  
  3. $ble=array{'@-.*?-@si');
  4.  
  5. $bleble=array('');
  6.  
  7. $result=preg_replace($ble,'$bleble,$result1);
  8. ?>


no dobra działa ale nie umiem znaleźć wyjaśnienia co znaczy w tym przypadku małpa albo @si, widziałem też @i , kiedy i po co się je stosuje
Ociu
@ @si - to granice ciągu od @ do @si.
http://bedkowski.pl/a/php_regex/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.