Portál AbcLinuxu, 12. května 2025 08:05
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:
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));
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.
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.
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 poleono to tam nejako nasúka postupne adresy, preto je tam ten implode.
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.