Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_match_all - maly problem
Forum PHP.pl > Forum > Przedszkole
JanuszTracz
Witam, mam maly problem otoz amm tekst postaci:



i chailbym wylowic 1 i 3, tyle ze jak? probowalem i wyciaga mi tekst 

  1. 1][/URL][URL=3][IMG]4[/IMG




prosze o pomoc pozdrawiam,

Janusz Tracz
tomsi
Za pomocą explode "potnij sobie ten tekst na kawałki (każdy znak osobno) i sprawdź czy jest to liczba is_numeric a potem pobierz te liczby, które potrzebujesz.
http://forum.php.pl/index.php?showtopic=11...mp;#entry564706

P.S.
Aha jeżeli te liczby to tylko przykład o co Ci chodzi no to potnij sobie tekst, który jest w [] i porównaj jeśli jest równe [URL=cos_tam] to wypisz cos_tam
JanuszTracz
a jezeli te numerki 1,2,3,4 to sa linki? 


takie cos robie:
  1. <?php
  2. preg_match_all('#[url=(.*)]#',$tekst, $screen);
  3. ?>

i wychodzi tak jak podalem w 1 poscie
kantek
Rozwiązanie dla ciągów typu:



z tego co napisałeś zrozumiałem, że potrzebujesz wyciągnąć ze stringa to co jest
pomiędzy = a ]

przykład:
  1. <?php
  2. function liczby($string)
  3. {
  4.    //rozbij ciag na tablice gdzie elementy  to czesci z ciagu pomiedy ktorymi bylo '='
  5.    $tab = explode('=',$string);
  6.    //mamy     1element. ([URL )       2.element (1][/URL][URL )   i 3.element(3][/URL])
  7.    
  8.    //pierwszy element zawsze usuwamy
  9.    array_shift($tab);
  10.    
  11.    //dla kazdego pola wykonuje -> znajdz pierwszy ] i usun go + to co jest za nim - zostaje sama liczba
  12.    foreach($tab as $var){
  13.        $wynik[] = substr($var, 0, strpos($var,']'));;
  14.    }
  15.    return $wynik;  //wynik w postaci tablicy
  16. }
  17.  
  18. $twoje_liczby = liczby("");
  19. print_r($twoje_liczby);
  20. ?>



Pozdrawiam
JanuszTracz
erix, tak wiem... tylko ze ja w tekscie mam kilka razy [url=(.*)] i wyciaga caly tekst miedzy pierwszym [url= a ostatnim ] aja chce po kolei kazdy link z [url=] ;/
kantek
Jeżeli moje rozwiązanie jest złe podaj przykład jak to ma wglądać??

1.
Cytat
i chailbym wylowic 1 i 3, tyle ze jak? probowalem i wyciaga mi tekst

2.
Cytat
wyciaga caly tekst miedzy pierwszym [url= a ostatnim ] aja chce po kolei kazdy link z [url=] ;/


Ma wyciągać cyfry czy linki czy co questionmark.gif

Pozdrawiam
erix
Było o wywołaniach rekurencyjnych, poszukaj. winksmiley.jpg
JanuszTracz
@kantek - linki linki, cyfry tak podalem dla przykladu..
kantek
Proszę bardzo:

jeszcze łatwiej w takim razie
  1. <?php
  2. $kasza ="";
  3.  
  4. $tablica = explode('[/URL]', $kasza);
  5. array_pop($tablica);
  6.  
  7. foreach($tablica as $key => $element){
  8.    $tablica[$key] = $element.='[/URL]'; //dopisuje bo usunął podczas exploda
  9. }
  10.  
  11. //po tej pętelce w tablicy masz osobno linki tak jak chciałeś
  12.  
  13. //mozna bylo w 1 petli wypisac ale zeby bylo ladnie widoczne co otrzymano
  14. foreach($tablica as $key =>$element){
  15.    echo 'Element('.++$key.') : '.$element.'<br />';
  16. }
  17. ?>


Pozdrawiam
JanuszTracz
wszystko git, tylko jakbym chcial same linki te z [url=...] ?
zegarek84
Cytat(JanuszTracz @ 14.04.2009, 17:19:43 ) *
a jezeli te numerki 1,2,3,4 to sa linki? 
takie cos robie:
  1. <?php
  2. preg_match_all('#[url=(.*)]#',$tekst, $screen);
  3. ?>

i wychodzi tak jak podalem w 1 poscie

spróbuj (nie sprawdzałem...):
  1. <?php
  2. preg_match_all('/[url=([^]]+)]/i',$tekst, $screen);
  3. echo  '<pre>';
  4. print_r($screen);
  5. echo '</pre>';
  6. ?>
kantek
To dajesz jak poprzednio tylko 1 pętla

  1. <?php
  2. foreach($tablica as $key => $element){
  3.    $tablica[$key] = substr($element, strpos($element,']')); //wywala bo juz tam nie ma
  4. }
  5. ?>


Pozdrawiam
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.