[php] preg_match_all probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
Ik heb een file met daarin het volgende:

Sender = blaat@hotmail.com
Recipient(s) = TutanRamon
Subject = Thank you!
Scanning time = 09/10/2003 20:39:52

Sender = l33t@hotmail.com
Recipient(s) = TutanRamon
Subject = Re: Details
Scanning time = 09/10/2003 20:05:12

Nu staan er in dat bestand wel een paar honderd van deze stukken tekst onderelkaar en ik wil graag alle afzenders hebben (in dit geval blaat@hotmail.com en l33t@hotmail.com). Ik zit al een tijdje te klooien met het volgende maar het werkt niet echt zoals het moet...
PHP:
1
2
3
4
5
6
7
<?php
$inhoud = file("blabla.CSV"); 
$regex = "(Sender = )[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+";
 
preg_match_all("/$regex/",$inhoud,$emailarray);

?>

[ Voor 5% gewijzigd door TutanRamon op 14-09-2003 11:16 ]

We see things as we are, not as they are


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik zit al een tijdje te klooien met het volgende maar het werkt niet echt zoals het moet...
En wat werkt er niet dan :?

Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
ACM schreef op 14 september 2003 @ 11:25:
[...]

En wat werkt er niet dan :?
Sorry, vergeten te melden.

Hij zet dus niets in die array. Conclusie daaruit is: er gaat iets fout in de $regexp. Maar volgens mij is die gewoon correct.

[ Voor 20% gewijzigd door TutanRamon op 14-09-2003 11:27 ]

We see things as we are, not as they are


Acties:
  • 0 Henk 'm!

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 09-09 09:55
Het lijkt me eerst handig als je weet wat de functie file() terug geeft. Die functie geeft namelijk een array terug en jij verwacht denk ik een string.

Als je dan een een var_dump() doet op $inhoud, dan zul je zien dat je niet persé een regexpressie nodig hebt.

Suc6

Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
KillR-B schreef op 14 september 2003 @ 11:27:
Het lijkt me eerst handig als je weet wat de functie file() terug geeft. Die functie geeft namelijk een array terug en jij verwacht denk ik een string.

Als je dan een een var_dump() doet op $inhoud, dan zul je zien dat je niet persé een regexpressie nodig hebt.

Suc6
Inderdaad. Ik verwachtte een string terug. Ik heb het nu gewijzigd in :
PHP:
1
$inhoud = var_dump(file("blabla.CSV"));

We see things as we are, not as they are


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

preg_match_all geeft een multidimensionale array terug, vervang $i door een getal om het e-mailadres er uit te halen.

$emailarray[$i][0]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

imho is dat niet echt wat je wilt...
doe dan op zijn minst:
$inhoud = file_get_contents("...");

Want anders krijg je er nog geen string uit...

print_r($emailarray) is nog iets handiger voor een debug-sessie.

[ Voor 19% gewijzigd door ACM op 14-09-2003 11:41 ]


Acties:
  • 0 Henk 'm!

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 09-09 09:55
TutanRamon schreef op 14 september 2003 @ 11:32:
[...]


Inderdaad. Ik verwachtte een string terug. Ik heb het nu gewijzigd in :
PHP:
1
$inhoud = var_dump(file("blabla.CSV"));
Ik neem aan dat je redelijk nieuw bent met PHP. Het lijkt mij verstandig om eens goed te kijken wat elke functie doet. PHP.net is hiervoor een goeie resource.

De functie var_dump() geeft namelijk niks terug, dus je kunt niks doen met het resultaat.

Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
Ok mensen, bedankt voor de hulp tot nu toe. Ik heb nu dit:
PHP:
1
2
3
4
5
6
$inhoud = file_get_contents("test.CSV"); 
$regex = "(Sender = )[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+"; 

preg_match_all("/$regex/",$inhoud,$emailarray);

print_r($emailarray);


Het werkt, maar er komt alleen niets uit.

We see things as we are, not as they are


Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
Ik heb even nader onderzoek gedaan en kwam zag dat de $mailarray maar 3 waarden bevat, terwijl het bestand blabla.CSV ruim honderd emailadressen bevat. Nu ben ik die $regex helemaal, stap voor stap, doorgelopen maar volgens mij is die gewoon goed.

Wat zie ik over het hoofd of wat doe ik fout?

We see things as we are, not as they are


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 16:10
Klik

Als je de inhoud van TutanRamon.php & blabla.CSV wil zien: Klik hier

[ Voor 13% gewijzigd door Mawlana op 14-09-2003 12:50 ]


Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
sylvesterrr schreef op 14 september 2003 @ 12:49:
Klik

Als je de inhoud van TutanRamon.php & blabla.CSV wil zien: Klik hier
Hartelijk bedankt Sylvesterr _/-\o_

Ik denk dat ik al zie wat ik fout heb gedaan. Nogmaals, bedankt!

We see things as we are, not as they are


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 16:10
TutanRamon schreef op 14 September 2003 @ 12:57:
[...]


Hartelijk bedankt Sylvesterr _/-\o_

Ik denk dat ik al zie wat ik fout heb gedaan. Nogmaals, bedankt!
maar ik vind em zelf eigenlijk wel slordig.

dus heb ik de regexp maar aangepast. :)
De source van de nieuwe versie is hier te vinden.

Acties:
  • 0 Henk 'm!

  • TutanRamon
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:53
sylvesterrr schreef op 14 september 2003 @ 13:05:
[...]


maar ik vind em zelf eigenlijk wel slordig.

dus heb ik de regexp maar aangepast. :)
De source van de nieuwe versie is hier te vinden.
haha, de perfectionist. Nogmaals thanx.

We see things as we are, not as they are

Pagina: 1