Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne do wyszukiwarki
orson
post 15.06.2006, 16:22:05
Post #1





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam

piszę wyszukiwarkę która bedzie wyławiać odpwiednie tagi z treści pytania i na tej podstawie wyszukiwać w odpowiednich bazach ... np dla takich danych (za pomocą preg_match_all) :
Kod
coś z opisu f:nazwa firmy o:pracownik2 o:pracownik2

wyciągnie mi to co po f: i to co po o: (początek jest mało ważny - na to mam łatwy sposób)
bardzo dobrze by było gdyby ten regexp dało się łatwo rozszeżyć na inne znaczniki ...

próbowałem różne kombinacje ale największym problemem jest (dla mnie przynajmniej) by nie zatrzymywał sie na "o" a dopiero na "o:" :/

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
siemakuba
post 15.06.2006, 17:29:25
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


spróbuj tak:
  1. <?php
  2. $str = 'coś z opisu f:nazwa firmy o:pracownik2 o:pracownik2';
  3. preg_match_all('/(o|f):([^ ]*)/i', $str, $match);
  4. print_r($match);
  5. ?>


wynik:
Kod
Array
(
    [0] => Array
        (
            [0] => f:nazwa
            [1] => o:pracownik2
            [2] => o:pracownik2
        )

    [1] => Array
        (
            [0] => f
            [1] => o
            [2] => o
        )

    [2] => Array
        (
            [0] => nazwa
            [1] => pracownik2
            [2] => pracownik2
        )

)


pozdr.
Go to the top of the page
+Quote Post
PHPSESSID
post 15.06.2006, 18:14:58
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 1.10.2004

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


chyba odpada bo masz 'nazwa firmy' a nie same 'nazwa' smile.gif albo parcownik to pewnie imie i nazwisko

po ciezkich wysilkach umyslowych (hahaha) doszlem do tego:

  1. <?php
  2. $str = "lalala f:nazwa firmy o:Andrzej Lepper o:Gerwazy o:O'rson Tadeusz Van Helsing";
  3.  
  4. preg_match_all('@(?:f|o):((?:[w']{2,})(?: [w']{2,})*)@si',$str,$out);
  5.  
  6. print_r($out);
  7. ?>


output:

Kod
Array
(
    [0] => Array
        (
            [0] => f:nazwa firmy
            [1] => o:Andrzej Lepper
            [2] => o:Gerwazy
            [3] => o:O'rson Tadeusz Van Helsing
        )

    [1] => Array
        (
            [0] => nazwa firmy
            [1] => Andrzej Lepper
            [2] => Gerwazy
            [3] => O'rson Tadeusz Van Helsing
        )

)


na poczatku probowalem :
  1. <?php
  2. preg_match_all('@(?:f|o):([^(?ohmy.gif:)]*?)@si',$str,$out);
  3. ?>

i niewiem czemu tez zatrzymywalo mi sie na 'o' zamiast na 'o:' :| moze ktos wyjasni?
Go to the top of the page
+Quote Post

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: 20.07.2025 - 06:12