Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] wyrażenia regularne
netmare
post 7.03.2008, 17:06:47
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


Chciałbym się czegoś nauczyć o wyrażeniach regularnych, przed chwilą przeczytałem wątek potreb'a i byłbym wdzięczny jakby mi to ktoś wytłumaczył

  1. <?php
  2. $text = '<a name="akt053322"></a> fggfgf <a name="akt053322"></a>';
  3. preg_match_all('[<a name="(.+?)"></a>]is', $text, $matches);
  4. ?>


Ten preg_match ma wyłuskać to akt053322
To czego nie rouzmiem:
1. Dlaczego .+? a nie .+
2. Co w tym przypadku oznacza []is
3. dlaczego nie ma znaczka / na końcu i na początku
Go to the top of the page
+Quote Post
sobstel
post 7.03.2008, 17:21:42
Post #2





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


1.
znak zapytania wyłączą "chciwość". w przeciwnym razie interpeter mógłby zebrać wszystko do końca. patrz: http://pl2.php.net/manual/en/reference.pcr...n.modifiers.php i opis modifiera U (PCRE_UNGREEDY)

2.
[] to delimetery w tym zapytaniu, natomiast "is" to modifiery (patrz link powyżej]

3.
ponieważ "Any character can be used for delimiter as long as it's not alphanumeric or backslash (\)" (manual, pierwszy akapit na http://pl.php.net/pcre). w powyższym wyrażeniu delimiterem są []. pewnie autor chciał uniknąć konieczności wstawiania backslasha przed slashes w </a>. ze slashem jako delimiterem wyglądałoby to tak: '/<a name="(.+?)"><\/a>/is'.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
netmare
post 7.03.2008, 17:36:11
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


1. Gdzieś czytałem, że delimitery powinny być takie same, ktoś źle napisał czy nawiasy kwadratowe to wyjątek?
2. Czy jeżeli używa się jako delimiterów [ ] to chcąc zdefiniować klasę trzeba użyc \ przed nawiasami?
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: 28.03.2024 - 12:12