Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne
Forum PHP.pl > Forum > PHP
ZenekN
Cześć mam prośbę o wyjaśnienie wyrażenia regularnego

  1. preg_replace('!IMIE\{([^\}]+)\}!si', '', $file);
  2. preg_replace('!NAZWISKO\{([^\}]+)\}!si', '', $file);



Z wyrażeniami regularnymi dopiero zaczynam, gdzie mogę najlepiej przećwiczyć ?




SmokAnalog
To wyrażenie usuwa z treści takie fragmenty jak:
  • IMIE{Roman}
  • NAZWISKO{Polański}
  • imie{1
    2}
  • nAzWiSkO{.}

Nie usunie za to takiego czegoś jak
  • Imie{}
  • NAZWISKO{}


Bo między tymi nawiasami klamrowymi musi cokolwiek być.

Wyrażenie można uprościć:
  1. Zapisać te dwie reguły w jednej
  2. Usunąć flagę `s`, bo ona nie ma racji bytu, kiedy we wzorcu nie ma znaku kropki


Efekt:
  1. preg_replace('!(?:IMIE|NAZWISKO)\{([^\}]+)\}!i', '', $file);
adbacz
Strona dotycząca Wyrażeń na WIKI: http://pl.wikipedia.org/wiki/Wyrażenie_regularne
Tester wyrażeń On-line: http://www.phpliveregex.com/
Dejmien_85
Najlepiej zacznij od podstaw, próby odgadnięcia gotowych wyrażeń to droga przez mękę.

Dopóki nie ogarniesz podstaw, to będziesz miał ciągle problemy.
ZenekN
Cześć nie chciałem zakładać nowego tematu

mam np. taką listę maili w dokumencie tesktowym
  1. Jan Nowak <jan@nowak.pl>,
  2. Kowalski <kowalski@nazwa.pl>,



i teraz potrzebuję wyciągnąć adres mailowy i dostać listę w postaci tablicy smile.gif pomoże ktoś ?
Turson
  1. preg_match_all('#<(.*)>#', $string, $matches);
SmokAnalog
Jak skorzystasz z przykładu Tursona, to listę maili będziesz miał w $matches[1].
ZenekN
@SmokAnalog, skąd wiedziałeś że trzeba podać wartość klucza[1] ? smile.gif
SmokAnalog
Bo tak działa preg_match_all - w $matches[0] masz tablicę całych dopasowań, czyli w Twoim przypadku [<adres@email.com>, <adres2@email.com>, ...]. Każdy kolejny klucz zawiera poszczególne dopasowania z nawiasów. We wzorcu Tursona sam adres e-mail jest w nawiasie, więc to wyląduje w $matches[1]. Gdyby nawiasów było więcej, to istniałby też indeks $matches[2] itd.
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.