Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
netmare
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
sobstel
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'.
netmare
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?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.