Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne - problem
Lame
post 5.11.2004, 16:42:33
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.10.2004

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


No to teraz walczę z regexami smile.gif Jak to najłatwiej zapisać by znajdowało mi w pliku wyrażenie: <!--INCLUDES jakieś_tekst-->

  1. <?php
  2. preg_match_all('/(<!--INCLUDEn){1}([a-zA-Z0-9_]+)(-->){1}/', $this->_uncompiled, $coś_tam)
  3. ?>
nie działa, bo pewnie stanowi jakiś niepośledni

bełkot tylko ja o tym jeszcze nie wiem smile.gif
I czy ktoś mógłby mi wytłumaczyć skąd taka forma zapisu:

  1. <?php
  2. preg_replace('/{([^}]+)}/e', '$this->dane[\"1\"]', $this->tmpl);
  3. ?>


Na moje oko to winno to wyglądać jakoś tak (tej powyższej formy nie rozumiem):

  1. <?php
  2. preg_replace('/{([a-zA-Z0-9_]+)}/e', '$this->_blocks[\"$1\"]', $this->tmpl);
  3. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
FiDO
post 5.11.2004, 17:24:40
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat
No to teraz walczę z regexami smile.gif Jak to najłatwiej zapisać by znajdowało mi w pliku wyrażenie: <!--INCLUDES jakieś_tekst-->


  1. <?php
  2.  
  3. preg_match_all('#<!--INCLUDESs+w+-->#U', $this->_uncompiled, $coś_tam);
  4.  
  5. ?>



Cytat
I czy ktoś mógłby mi wytłumaczyć skąd taka forma zapisu:

  1. <?php
  2. preg_replace('/{([^}]+)}/e', '$this->dane[\"1\"]', $this->tmpl);
  3. ?>

Chodzi Ci zapewne o ten [^}]+ kawalek ? To dziala na takiej zasadzie,ze wylapuje wszystkie znaki oprocz (znak ^ oznacza w tym przypadku negacje) tych ktore sa umieszczone w nawiasie, w tym wypadku wszystko oprocz }


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Lame
post 5.11.2004, 17:35:07
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.10.2004

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


Dzięki wielkie, męczę się z tymi regexami już drugi dzień (próbuję system szablonów napisać), a wszystko przez to, że trudno znaleźć w necie jakieś wyczerpujące źródło informacji o nich (manual php odpada bo mam kłopoty ze zrozumieniem bardziej skomplikowanych terminów technicznych po ang.)

Cytat
Chodzi Ci zapewne o ten [^}]+ kawalek ? To dziala na takiej zasadzie,ze wylapuje wszystkie znaki oprocz (znak ^ oznacza w tym przypadku negacje) tych ktore sa umieszczone w nawiasie, w tym wypadku wszystko oprocz }


Dokładnie o to mi chodziło smile.gif Właśnie powodu dla którego znak "^" występował w tym wyrażeniu nie mogłem rozgryźć, ani wpaść na to jaką rolę pełni smile.gif Chciałem się jeszcze zapytać - w celach szkoleniowych, co jest nie tak w zapisie:

  1. <?php
  2. preg_match_all('/(<!--INCLUDEn){1}([a-zA-Z0-9_]+)(-->){1}/', $this->_uncompiled, $coś_tam)
  3. ?>


Wyszukiwać "to coś" biggrin.gif powinno zaś <!--INCLUDE jakieś_tekst--> - wcześniej się machnąłem i wstawiłem niepotrzebnie S, spacji też zdaje się nie było widać.
Go to the top of the page
+Quote Post
FiDO
post 5.11.2004, 23:46:04
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat
(manual php odpada bo mam kłopoty ze zrozumieniem bardziej skomplikowanych terminów technicznych po ang.)

Pracuje nad tlumaczeniem (ze swoimi dodatkami) tej czesci manuala, bo uwazam go za swietne zrodlo informacji jesli chodzi o regexpy.

Cytat
Chciałem się jeszcze zapytać - w celach szkoleniowych, co jest nie tak w zapisie:

  1. <?php
  2. preg_match_all('/(<!--INCLUDEn){1}([a-zA-Z0-9_]+)(-->){1}/', $this->_uncompiled, $coś_tam)
  3. ?>

Wyglada w miare dobrze poza jednym szczegolem.. Znaki specjalne jak \n trzeba umieszczac w stringach umieszczonych w cudzyslowach, a nie apostrofach, zeby zostaly one poprawnie rozpoznane.
Pozatym wszelkie {1} sa w tym wyrazeniu niepotrzebne, mozesz spokojnie sie ich pozbyc. Nawiasy w okolo INCLUDE oraz --> rowniez, jesli potrzebujesz wyciagnac tylko to co jest miedzy nimi.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Lame
post 5.11.2004, 23:55:22
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.10.2004

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


Cytat
Pracuje nad tlumaczeniem (ze swoimi dodatkami) tej czesci manuala, bo uwazam go za swietne zrodlo informacji jesli chodzi o regexpy.


W stu procentach popieram, nigdy za mało tego typu incjatyw - z tego co zdążyłem przejrzeć ta część manuala jest rzeczywiście dobrym źródłem informacji, nie leci po łebkach lecz wchodzi w szczegóły, dla mnie jednak, jak już wspomniałem, przeszkodą jest dość skomplikowana (jak dla mnie) terminologia w jęz. angielskim. Jeszcze raz dzięki za pomoc.

I jeszcze jedna rzecz która mnie dziwi - właśnie odkryłem, iż to moje ostatnie wyrażenie:

  1. <?php
  2. '/(<!--INCLUDEn){1}([a-zA-Z0-9_]+)(-->){1}/'
  3. ?>


Działa jeśli zrobię spację po pierwszym nawiasie (czyli wystarczy spacja? nie trzeba używać zanków specjalnych?).

Ten post edytował Lame 6.11.2004, 00:35:02
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: 25.07.2025 - 10:06