Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_match: email ze zmiennej weryfikuje dobrze - ze strony www nie
Forum PHP.pl > Forum > Przedszkole
Grandalf00
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.
kapslokk
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.
viking
A poza tym wzorzec ten i tak jest niepoprawny dla maila zgodnie z RFC.
markuz
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
Grandalf00
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.
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.