Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne
ZenekN
post
Post #1





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

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


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ć ?




Go to the top of the page
+Quote Post
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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);
Go to the top of the page
+Quote Post
adbacz
post
Post #3





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Strona dotycząca Wyrażeń na WIKI: http://pl.wikipedia.org/wiki/Wyrażenie_regularne
Tester wyrażeń On-line: http://www.phpliveregex.com/
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

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


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.
Go to the top of the page
+Quote Post
ZenekN
post
Post #5





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

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


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ś ?
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. preg_match_all('#<(.*)>#', $string, $matches);
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Jak skorzystasz z przykładu Tursona, to listę maili będziesz miał w $matches[1].
Go to the top of the page
+Quote Post
ZenekN
post
Post #8





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

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


@SmokAnalog, skąd wiedziałeś że trzeba podać wartość klucza[1] ? smile.gif
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #9





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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.
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 Aktualny czas: 21.08.2025 - 06:17