Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Szybkie pytanie: wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
evolucja
Chyba najtrudniejsza rzecz w całym tym PHP aby opanować te wyrażenia... Potrzebuję sprawdzić czy w zmiennej $tekst występuje ciąg "$*DOLACZ_MODUL*GALERIA*&" a jeśli tak, to wyłuskać z tego słowo GALERIA.

Na przykład:
Cytat
jakiś tekst.. tekst przykładowy... $*DOLACZ_MODUL*$*GALERIA*1*active*$ więcej tekstu test test test

I chciałbym otrzymać w tablicy: GALERIA, 1 i active. Lista parametrów może zostać rozszerzona lub zmniejszona do 1. Oczywiście w grę wchodzi również inny zapis tego ciągu.


Wdzięczny za pomoc będę.
tolomei
Chcesz usunąć to słowo z tego ciągu ?
markonix
W sumie tak bardzo nie są tu potrzebne wyrażenia.
Najpierw korzystasz z strstr, a potem str_replace i usuwasz "&DOLACZ_MODUL&" zostawiając interesujący Cie fragment.
evolucja
Nie, nie usunąć. Zaktualizowałem pierwszy post. Mam nadzieję, że teraz będziecie mogli zrozumieć o co mi chodzi. smile.gif
nekomata
Proszę bardzo :
  1. <?php
  2. $pattern = '#.*\$\*DOLACZ_MODUL\*\$\*(.*)\*\$.*#';
  3. $target = 'jakiś tekst.. tekst przykładowy... $*DOLACZ_MODUL*$*GALERIA*1*active*$ więcej tekstu test test test
  4. jakiś tekst.. tekst przykładowy... $*DOLACZ_MODUL*$*Gelerioza*$ więcej tekstu test test test
  5. jakiś tekst.. tekst przykładowy... $*DOLACZ_MODUL*$*Bitwa*pod*grunwaldem*1410*$ więcej tekstu test test test';// 3 różne do złapania biggrin.gif
  6. preg_match_all($pattern,$target,$catched);
  7. echo '<pre>';
  8. print_r($catched[1]);// Wynik preg match
  9. $podzielone = array();
  10. foreach($catched[1] as $zlapane){
  11. $podzielone[] = explode('*',$zlapane);
  12. }
  13. print_r($podzielone);// Rozdzielona tablica
  14. echo '</pre>';
  15. ?>
Powyższy skrypt na localhoscie produkuje :
Kod
Array
(
    [0] => GALERIA*1*active
    [1] => Gelerioza
    [2] => Bitwa*pod*grunwaldem*1410
)
Array
(
    [0] => Array
        (
            [0] => GALERIA
            [1] => 1
            [2] => active
        )

    [1] => Array
        (
            [0] => Gelerioza
        )

    [2] => Array
        (
            [0] => Bitwa
            [1] => pod
            [2] => grunwaldem
            [3] => 1410
        )

)
Czyli wszystko ładnie wyświetliłem , oczywiście w teście użyłem kilku różnych ale niema różnicy ile masz do znalezienia 1 czy 100 . (przy 0 się wykrzaczy ale nie chciało mi się tego uwzględniać.)

EDIT : Zmieniłem testowy string i wyświetlenia , mam nadzieje że to rozwieję wątpliwości. (REG exp znajdzie każdy znak pomiędzy $*DOLACZ_MODUL*$* a *$ potem rozdzielam na tablice(explode na znaku *) , przez co ładnie się array'e rozchodzą niezależnie od ilości parametrów ).

EDIT 2 (offtopic) :
Cytat(evolucja @ 7.05.2011, 17:43:29 ) *
Wdzięczny za pomoc będę.
Potężny stałeś się, Dooku. Ciemną stronę w tobie wyczuwam. Zobacz tutaj
evolucja
Kolego, cholera, jesteś wielki. Do prawdy nie wiem w jaki sposób okazać tobie moją wdzięczność...
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.