Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][REGEXP], Temat aktualny - Wyciąganie z podanego tekstu konkretnych nawiasów
golaod
post
Post #1





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Witam serdecznie.

Temat troszkę źle obrazuje to co chciałbym uzyskać. Konkretnie chodzi mi o coś takiego:

Mamy sobie string np.

jeden(dwa(trzy(1))) funkcja(funkcja1())

Wynikiem wyszukiwania powinna być tablica:
1 => jeden(dwa(trzy(1)))
2 => funkcja(funkcja1())

Czemu to nie jest proste. Ponieważ chciałbym, żeby to było idiotoodporne. Czyli w sytuacji:

jeden(dwa(trzy(1)))[el1,el2] funkcja(funkcja1())

wynikową tablicą była
1 => jeden(dwa(trzy(1)))
2 => [el1,el2]
3 => funkcja(funkcja1())

Co rodzi problem:
jeden(dwa(trzy([el1,el2])))

Pozdrawiam.

bump

Czyżby, był z tym aż taki problem ? Ogólnie mogę to zrobić przechodząc po każdym znaku w stringu, tylko pytanie czy to nie będzie mniej wydajne w porównaniu do wyrażeń.

Ten post edytował golaod 28.08.2011, 17:54:12
Go to the top of the page
+Quote Post
Magic WWW
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Trudne z zrobieniu to nie jest tylko mam pytanie, czy Ty podawałeś znaki [el...] jako przykład czy to ma być konkretnie do takich znaków?
Go to the top of the page
+Quote Post
sada
post
Post #3





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


nie rozumiem zadania od :
Cytat
"co rodzi problem"
Go to the top of the page
+Quote Post
Magic WWW
post
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Proszę bardzo smile.gif

  1. $string = 'jeden(dwa(trzy(1)))[asaasd]funkcja(funkcja1())';
  2.  
  3. preg_match('#[A-Z_0-9]+\(([A-Z0-9_,\(\)]+\))*#i', $string, $cut);
  4.  
  5. echo '<pre>';
  6. var_dump($cut);
  7. echo '</pre>';


W razie problemu pisz w temacie smile.gif
Go to the top of the page
+Quote Post
golaod
post
Post #5





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Cytat(Magic WWW @ 28.08.2011, 12:01:56 ) *
Proszę bardzo smile.gif

  1. $string = 'jeden(dwa(trzy(1)))[asaasd]funkcja(funkcja1())';
  2.  
  3. preg_match('#[A-Z_0-9]+\(([A-Z0-9_,\(\)]+\))*#i', $string, $cut);
  4.  
  5. echo '<pre>';
  6. var_dump($cut);
  7. echo '</pre>';


W razie problemu pisz w temacie smile.gif


Ok tylko uwzględniłem tam też sytuację:
jeden(dwa(trzy([el1,el2])))
która nie zostanie wyłapana Twoim wyrażeniem smile.gif Ale dziękuję za poświęcony czas.


bump

bump

bump

bump
Go to the top of the page
+Quote Post
kicaj
post
Post #6





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


To dodaj to wyrazenie klamry kwadratowe poprzedzajac ukosnikiem...


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
golaod
post
Post #7





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Cytat(kicaj @ 29.08.2011, 17:21:36 ) *
To dodaj to wyrazenie klamry kwadratowe poprzedzajac ukosnikiem...

A sprawdzałeś działanie tego ?

bump

bump

Spytam może inaczej. Podobne rozwiązanie widziałem chyba w selektorach jquery do html. Może ktoś potrafiłby przerobić wyrażenie regularne z JS do PHP, a ja już bym sobie dalej poradził.

Ten post edytował golaod 30.08.2011, 22:01:45
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 Aktualny czas: 20.08.2025 - 03:40