Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Szybkie pytanie: wyrażenie regularne
evolucja
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


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

Ten post edytował evolucja 7.05.2011, 22:16:36
Go to the top of the page
+Quote Post
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Chcesz usunąć to słowo z tego ciągu ?
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


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.
Go to the top of the page
+Quote Post
evolucja
post
Post #4





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Nie, nie usunąć. Zaktualizowałem pierwszy post. Mam nadzieję, że teraz będziecie mogli zrozumieć o co mi chodzi. (IMG:style_emoticons/default/smile.gif)

Ten post edytował evolucja 7.05.2011, 22:17:46
Go to the top of the page
+Quote Post
nekomata
post
Post #5





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


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 (IMG:style_emoticons/default/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

Ten post edytował nekomata 8.05.2011, 07:05:56
Go to the top of the page
+Quote Post
evolucja
post
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Kolego, cholera, jesteś wielki. Do prawdy nie wiem w jaki sposób okazać tobie moją wdzięczność...
Go to the top of the page
+Quote Post

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: 25.08.2025 - 02:41