Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne, Za dużo zwraca?
batman
post 15.10.2006, 18:33:39
Post #1





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Witam

Mam taki ciąg:

[page_title] [page_menu] [page_body]

i wyrażenie:

  1. <?php
  2. preg_match_all('/[(.*)]/',$methods,$aout);
  3. ?>


Przed "[" i "]" znajdują się "\".

Do tablicy zapisuje mi takie coś:

Kod
Array
(
    [0] => Array
        (
            [0] => [page_title]
            [1] => [page_menu]
            [2] => [page_body]
        )

    [1] => Array
        (
            [0] => page_title
            [1] => page_menu
            [2] => page_body
        )

)


a chciałbym, by zapisywało tylko nazwy między "[" i "]". Co jest nie tak ?

EDIT
Chyba znalazłem rozwiązanie problemu. Tak jak napisał @hwao jest dodatkowy parametr, który należy ustawić. Jak się upewnię, że działa, to przedstawię rozwiązanie.

Ten post edytował batman 16.10.2006, 08:19:57


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
1010
post 15.10.2006, 18:40:26
Post #2





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


to obcinaj z tego co ci zwroci jeden znak z przodu i jeden z tylu i bedziesz mial to co chcial...
do tego polecam funkcje substr()
Link do manuala: http://pl.php.net/manual/pl/function.substr.php


--------------------
Go to the top of the page
+Quote Post
batman
post 15.10.2006, 18:42:56
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Sądzę, że nie jest to najlepsze rozwiązanie. Po to stosuję wyrażenie regularne, by nie bawić się w inne operacje na ciągach. Nie jestem najlepszy w wyrażenia regularne, ale wiem, że można wyjąć ciąg znajdujący się między jakimiś znakami. Wyciąga mi, ale efekt nie jest taki jaki oczekiwałem.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
sf
post 15.10.2006, 18:43:42
Post #4





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


przecież zapisuje w [1] dobre nazwy... więc w czym problem? a jak przeszkadza Ci to [0] dodatkowo to wystarczy array_pop ...

Ten post edytował sf 15.10.2006, 18:45:09


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
batman
post 15.10.2006, 18:46:32
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat
przecież zapisuje w [1] dobre nazwy... więc w czym problem? a jak przeszkadza Ci to [0] dodatkowo to wystarczy array_pop ...


Po to by nie bawić się obrabianie wyniku. Nie potrzebuję innych elementów tablicy.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
1010
post 15.10.2006, 18:54:01
Post #6





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


tu ci zwraca tak jak chcesz przeciez:

[1] => Array
(
[0] => page_title
[1] => page_menu
[2] => page_body
)

masz to w tablicy $zmienna[1];


--------------------
Go to the top of the page
+Quote Post
batman
post 15.10.2006, 19:11:42
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




By było jasne. Efekt, jaki próbuję uzyskać to:

Kod
Array
        (
            [0] => page_title
            [1] => page_menu
            [2] => page_body
        )


Nie chcę wyciągać podtablicy, wycinać znaków i wykonywać jakichkolwiek operacji na tej tablicy.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
1010
post 15.10.2006, 19:16:15
Post #8





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


  1. <?php
  2. $twoja_tablica = $tablica[1];
  3. ?>

i masz to co chcesz


--------------------
Go to the top of the page
+Quote Post
batman
post 15.10.2006, 19:21:30
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Najwyraźniej masz problemy ze zrozumieniem mojego pytania. Napiszę, więc jeszcze raz.

Jak uzyskać przy pomocy wyrażenia regularnego (gdzie się pomyliłem) efekt opisany w moim poprzednim poście.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
1010
post 15.10.2006, 19:25:37
Post #10





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


To chyba nie możliwe, a napewno nie przy pomocy funkcji preg_match_all. A co to za różnica?


--------------------
Go to the top of the page
+Quote Post
sf
post 15.10.2006, 19:31:37
Post #11





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


@batman: napisz sobie w c, skompiluj, dodaj jako moduł i użyj batman_preg_match_all biggrin.gif


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
1010
post 15.10.2006, 19:41:58
Post #12





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


hehe biggrin.gif ale chyba pierwsze rozwiązanie jest bardziej optymalne biggrin.gif


--------------------
Go to the top of the page
+Quote Post
batman
post 15.10.2006, 19:44:59
Post #13





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@sf
Hehe. Na to nie wpadłem. Chyba tak zrobię winksmiley.jpg


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
1010
post 15.10.2006, 19:49:03
Post #14





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


zastanów sie tylko "po co?"


--------------------
Go to the top of the page
+Quote Post
batman
post 15.10.2006, 19:53:10
Post #15





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@1010
Ty piszesz na poważnie, czy tylko posty nabijasz ?


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
1010
post 16.10.2006, 06:24:23
Post #16





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


pisze na poważnie... powiedz mi co w tej funkcji preg_match_all jest ci takiego nie na rękę?


--------------------
Go to the top of the page
+Quote Post
batman
post 16.10.2006, 07:31:00
Post #17





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Załóżmy, że masz pętle for, która iteruje przez 100 elementów. Ty potrzebujesz, by iterowała przez 80 elementów. Jak to zrobisz? Napiszesz warunek w pętli

  1. <?php
  2. if($i>= 80) break;
  3. ?>


czy zmniejszysz licznik do 80?

Zanim odpiszesz zastanów się czy dobrze zrozumiałeś.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
hwao
post 16.10.2006, 07:52:11
Post #18


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




wracajac do pytania z poczatku.

Pod zerowym kluczem zwracaly jest caly ciag ktory pasuje do wyrazenia, w nastepnych sa kolejno etomy. Z tego co sie orientuje to chyba byla jakas flaga ktora powodowala ze nie jest zwracany caly ciag pasujacy do wyrazenia, tylko atomy. Porozgladaj sie po flagach
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: 12.06.2025 - 20:59