Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_match: email ze zmiennej weryfikuje dobrze - ze strony www nie
Grandalf00
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

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


Witam forumowiczów! Testuje pisanie wyrażeń regularnych i pewnej rzeczy nie potrafię zrozumieć.

  1. <?php
  2. $email = "email@domena.pl";
  3. $wzor = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/';
  4. echo preg_match($wzor, $email);
  5. ?>

Zwraca 1 - ok, jasne, ale:
  1. <?php
  2. $strona = fopen('https://www.lu.pl/kontakt/', 'r');
  3. $wzor = '/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$/';
  4. while(!feof($strona)) {
  5. $linia = fgets($strona);
  6. if(preg_match($wzor,$linia) == 1) {
  7. echo $linia;
  8. }
  9. }
  10. ?>


nie zwraca nic, natomiast jak usunę ^ i $, to prawidłowo dostaje wszystkie adresy. Dlaczego? Sprawdzałem na kilku stronach i zawsze ze znacznikami początku i końca nie dostaje nic.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
kapslokk
post
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


A sprawdzałeś po co właściwie są ^ i $? To początek i koniec stringu.
Czyli Twoje wyrażenie sprawdza czy podana linia jest w CAŁOŚCI adresem email.
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A poza tym wzorzec ten i tak jest niepoprawny dla maila zgodnie z RFC.


--------------------
Go to the top of the page
+Quote Post
markuz
post
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Ponieważ znacznik ^ to początek a $ to koniec. Czyli do:
Kod
/^([0-9]{1})$/

będzie pasować tylko string który zawiera pojedyńczy znak od 0 do 9 np. "1" => 1, "ala ma 5 kota" => NULL
Kod
/([0-9]{1})/

będzie pasować każdy znak od 0 do 9 w tym stringu np. "1" => 1, "ala ma 5 kota" => 5


--------------------
Go to the top of the page
+Quote Post
Grandalf00
post
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

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


Cytat(kapslokk @ 23.01.2016, 15:12:40 ) *
A sprawdzałeś po co właściwie są ^ i $? To początek i koniec stringu.
Czyli Twoje wyrażenie sprawdza czy podana linia jest w CAŁOŚCI adresem email.


Tak, sprawdzałem, ale z tłumaczeń zawsze wnioskowałem, że to ma być początek i koniec zdefiniowanego stringu, tzn: "To mój adres e-mail: adres@domena.pl", to myślałem, że:
Cytat
To jest mój adres e-mail: ^adres@domena.pl$

a nie:
Cytat
^To jest mój adres e-mail: adres@domena.pl$

i stąd moje pytanie. Czyli wnioskowałem, że skrypt przeszukuje znak po znaku i szuka fragmentu zgodnego ze wzorcem.

Cytat(viking @ 23.01.2016, 15:14:09 ) *
A poza tym wzorzec ten i tak jest niepoprawny dla maila zgodnie z RFC.


Domyślam się, po prostu kombinowałem na wszelkie sposoby aby znaleźć rozwiązanie.
Dziękuje.

Ten post edytował Grandalf00 23.01.2016, 15:23:19
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 - 02:28