Portál AbcLinuxu, 27. dubna 2024 04:18


Dotaz: PHP orezanie emailovej adresy

8.7.2011 12:01 adrinko | skóre: 22
PHP orezanie emailovej adresy
Přečteno: 103×
Odpovědět | Admin

dobrý deň, mám takýto reťazec

$string="toto je ()a_b-c@domena.tld (.-pokracujeme_9ľšýťý2((0'\")druha@adresa.tld";

Potreboval by som všetok balast odstrániť a zachovať len prvú emailovú adresu "a_b-c@domena.tld". poradíte prosím?


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.7.2011 12:21 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: PHP orezanie emailovej adresy
Odpovědět | | Sbalit | Link | Blokovat | Admin
mám riešenie:
function extract_emails_from($string){
  preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
  return $matches[0];
}

$text = "toto je ()a_b-c@a_a.a.domena_-q.a-a.tld) (.-pokracujeme_9ľšýťý2((0'\")druha@adresa.tld";

$emails = extract_emails_from($text);

print(implode("\n", $emails));
Tarmaq avatar 8.7.2011 12:41 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP orezanie emailovej adresy
Pozor, tento regexp nepokryje vsechny podporovane formaty e-mailu dle RFC 2822. Na co je tento skriptik vlastne potreba? Co kdyz bude pred/za e-mailovou adresou 1-n znaku, ktere mohou byt soucasti e-mailove adresy?

Btw nepochopil jsem smysl implodu, kdyz $emails neni pole, ale string ;]
Don't panic!
8.7.2011 12:58 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: PHP orezanie emailovej adresy
Btw nepochopil jsem smysl implodu, kdyz $emails neni pole, ale string ;]
funkcia vracia do $emails pole, tak preto je tam implode.
Co kdyz bude pred/za e-mailovou adresou 1-n znaku, ktere mohou byt soucasti e-mailove adresy?
mohol by som poprosiť o ukážku emailovej adresy, ktorú to nepokryje? ak by ste mali nápad, ako pokryť všetky emailové adresy, bolo by to vynikajúce.
Tarmaq avatar 8.7.2011 13:26 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP orezanie emailovej adresy
funkcia vracia do $emails pole, tak preto je tam implode.
Vazne? Mne prijde ze vraci prvni (nulty) prvek z toho pole, tedy string
mohol by som poprosiť o ukážku emailovej adresy, ktorú to nepokryje?
napr. "foo+bar@omg.tld"
ak by ste mali nápad, ako pokryť všetky emailové adresy, bolo by to vynikajúce.
Napr. zde jsem takovou kontrolu uvadel, akoratze byla napsana v javascriptu a nechci ji ted prepisovat do PHP, ale jiste to nejak pujde.
Don't panic!
8.7.2011 13:36 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: PHP orezanie emailovej adresy
napr. "foo+bar@omg.tld"
upravil som to na preg_match_all("/[\._+a-zA-Z0-9-]+@[\._+a-zA-Z0-9-]+/i", $string, $matches); a berie teraz aj plus. neviem, či ešte ďalšie znaky by mohli robiť problémy...(?)
(nulty) prvek z toho pole
ono to tam nejako nasúka postupne adresy, preto je tam ten implode.
Tarmaq avatar 8.7.2011 13:49 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP orezanie emailovej adresy
ešte ďalšie znaky by mohli robiť problémy?
ano, mrkni na ten odkaz co jsem posilal vyse.. Navic tobe to dovoli napr. emailovou adresu "foo@bar....cz"
ono to tam nejako nasúka postupne adresy, preto je tam ten implode.
Aha on je tam pouzit preg_match_all, ktery narozdil od preg_match vraci pole poli a ne pole stringu.
Don't panic!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.