Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PCRE - parsowanie string'a
piotrooo89
post
Post #1


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




hej,

mam lekki problem z regexp'ami, do rzeczy. mam takie stringi (możliwości):

Kod
jeden+"+test"+dwa
jeden+"test+"+dwa
jeden+"te+st"+dwa


i teraz chce "porozbijać" te ciągi względem znaku +, wynik:

Kod
jeden; "+test"; dwa
jeden; "test+"; dwa
jeden; "te+st"; dwa


oczywiście te rozbicia maja być tablicą otrzymana przez preg_split.


stworzyłem takie wyrażenie:

Kod
#((?<!")\+)|(\+(?!(.*)"))#si


niestety dopasowuje mi tylko do pierwszego ciągu:

Kod
jeden; "+test"; dwa


pozostałe dwa nie parsują się poprawnie, jakiejś sugestie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Szybciej będzie chyba napisać banalny wręcz parser, który po prostu przeleci znak po znaku i rozdzieli względem znaku "+". Do tego proste sprawdzanie Czy znajdujemy się pomiędzy cudzysłowem?, ignorujące znak "+".

O dziwo w PHP najprawdopodobniej będzie to najwolniejsze rozwiązanie. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
piotrooo89
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(Crozin @ 2.03.2012, 10:40:04 ) *
Szybciej będzie chyba napisać banalny wręcz parser, który po prostu przeleci znak po znaku i rozdzieli względem znaku "+". Do tego proste sprawdzanie Czy znajdujemy się pomiędzy cudzysłowem?, ignorujące znak "+".

O dziwo w PHP najprawdopodobniej będzie to najwolniejsze rozwiązanie. (IMG:style_emoticons/default/wink.gif)


właśnie tak miałem teraz, o ile przy string'u, który ma kilkanaście znaków to jest spoko, ale jak już wzrasta złożoność obliczeniowa wraz z wzrostem złożoności string'u robi się nie wydajnie, dlatego chciałem to zrzucić na PCRE (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 22:49