Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_match tablica
Forum PHP.pl > Forum > Przedszkole
inomi13
Mam poniższy kod, który sprawdza czy adres e-mail pasuje do danej domeny. Jednak mam problem z przerobieniem kodu tak aby sprawdzał czy tablica adresów e-mail występuje w tablicy domen. Proszę o sugestie jak się do tego zabrać bo wiem że preg_match sprawdza tylko dane ciągi a nie tablice.

  1. $example = array('sklep@o.pl','sklep@i.pl','sklep@w.pl');
  2. $searchword = ('o.pl');
  3. foreach($example as $index=>$value)
  4. {
  5. if(preg_match("/$searchword/i", $example[$index]))
  6. {
  7. echo $example[$index];
  8. }
  9. }
trueblue
Musisz po prostu dodać drugi for.

P.S. Sugeruję Ci dodanie do wyrażenia regularnego znaku @.
inomi13
Coś w tym rodzaju?

  1. $example = array('sklep@o.pl','sklep@i.pl','sklep@w.pl');
  2. $searchword = count(array('w.pl','o.pl'));
  3. foreach($example as $index=>$value)
  4. {
  5. for($i=1; $i<=$searchword; $i++)
  6. {
  7. if(preg_match("/$searchword[$i]/i", $example[$index]))
  8. {
  9. echo $example[$index];
  10. }
  11. }
  12. }
  13. }
trueblue
Może tak, prościej:

  1. $searchwords = array('w.pl','o.pl');
  2.  
  3. foreach($example as $value)
  4. {
  5. for($searchwords as $searchword)
  6. {
  7. if(preg_match("/@$searchword/i", $value))
  8. {
  9. echo $value;
  10. }
  11. }
  12. }

YourFrog
Jak już masz regexp pfu pfu (zobacz sobie w RFC jak wygląda regexp na prawidłowy adres e-mail). To skorzystaj z niego

  1. <?php
  2.  
  3. $domains = ['w.pl','o.pl'];
  4. $emails = ['sklep@o.pl','sklep@i.pl','sklep@w.pl'];
  5. $regexp = '/(' . implode('|', $domains) . ')/i';
  6.  
  7. $result = [];
  8. foreach($emails as $key => $email) {
  9. $result[$email] = (bool) preg_match($regexp, $email);
  10. }
  11.  
  12. var_dump($result);
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.