Gå til innhold

ereg() - søke gjennom hele stringen


Anbefalte innlegg

Heisan sitter å pusler litt med ett skript for å søke gjennom en string etter e-mail adresser. Bruker ereg() funksjonen med denne regex'en

 

<?php
$regex = "^[\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[\.a-zA-Z]{2,6}$";
?>

 

det jeg lurer på er hvordan kan jeg sette denne regex'en til å søke etter mer enn en e-mail adresse? eller er det mulig? har forsøkt endel forskjellige løsninger, men er sluppet opp for ideer.

 

:thumbup: om noen har en løsning :yes:

Lenke til kommentar
Videoannonse
Annonse
Heisan sitter å pusler litt med ett skript for å søke gjennom en string etter e-mail adresser. Bruker ereg() funksjonen med denne regex'en

 

<?php
$regex = "^[\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[\.a-zA-Z]{2,6}$";
?>

 

det jeg lurer på er hvordan kan jeg sette denne regex'en til å søke etter mer enn en e-mail adresse? eller er det mulig? har forsøkt endel forskjellige løsninger, men er sluppet opp for ideer.

 

:thumbup:  om noen har en løsning  :yes:

5147305[/snapback]

 

ville kanskje brukt

 

$reqex = explode(" ",$regex);

foreach($reqex as $value)

{if(ereg("^[\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[\.a-zA-Z]{2,6}$",$valie)){$email[] = $value;}}

 

ikke testet...

Lenke til kommentar

hehe dårlig forklart :blush:

 

det jeg mente var å finne flere e-mail adresser i en string. stringen kan se slik ut:

 

$string = "blabla [email protected] blabla [email protected] [email protected] som du ser kan det være tekst biter som ikke er e-mail adresser her"

 

har prøvd denne varianten av regex'en uten store resultater:

 

$regex = "^([\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[\.a-zA-Z]{2,6})*$";
if ($match = ereg($regex, $string, $arr)) {
  foreach ($arr as value) {
     echo $value;
  }
}else{
  echo 'no no no...';
}

 

håpet med denne koden var å bruke "atoms" til å få regex'en til å søke gjennom resten av stringen og legge treffene inn i $arr og printe de ut.

 

edit: la til litt

Endret av LateFot
Lenke til kommentar
ville kanskje brukt

 

$reqex = explode(" ",$regex);

foreach($reqex as $value)

{if(ereg("^[\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[\.a-zA-Z]{2,6}$",$valie)){$email[] = $value;}}

 

ikke testet...

5147492[/snapback]

 

mjo vil jo være en mulighet, men det vil vil vel være lettere om ereg() alene kan hente ut treffene. om jeg skulle bruke " " som separator vil det bli en god del arrays som ikke inneholder e-mail adresser. jeg regner med å bruke denne for å hente ut e-mail adresser fra tekster som nyheter etc. hvor det er mye annen tekst i tillegg.

 

takker så mye for svar :thumbup:

Endret av LateFot
Lenke til kommentar

Det er ikke store forskjellen mellom ereg og preg, ta en kikk på denne:

 

$string = "bla bla [email protected] mer bla bla [email protected] litt mer bla bla før den siste adressen [email protected]";

preg_match_all("/([\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[\.a-zA-Z]{2,6})/i", $string, $matches);

var_dump($matches);

 

(merk: den tar utgangspunktet i den validering av adresser, jeg har ikke validert den eller kikket på den!)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...