[PHP] RegExp vraagje.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 12-09 20:42

The Milkman

█████░░░░░ 50%

Topicstarter
Ik kom er even niet uit.
Ik ben er bijna, dat weet ik wel, maar het lukt niet.

Ik heb een bestand met emailadressen.
het ziet er zo uit:
<contact>mail1@bedrijf.nl</contact>
<contact>admin2@bedrijf.nl</contact>
<contact>werknemer3526@bedrijf.nl</contact>

Nu wil ik alle mailadressen uit het bestand filteren, en die achterelkaar krijgen met komma's.
Ik heb dit gemaakt:

<?php
$file = file_get_contents ('bestand.dat');
$regexp = "/<contact>(.*)<\/contact>/";
preg_match($regexp,$file,$match);

print_r($match); //dit om te kijken of ie de regex ook goed doet... niet dus.
?>

Als ik dit script uitvoer, zet ie alleen het 1e mailadres uit de lijst 2x in een array.

Wie helpt me even?
Alvat bedankt maar weer!

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑


Acties:
  • 0 Henk 'm!

  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 19-03 13:31
Probeer eens preg_match_all() ;)

Was ik maar een punt dan was ik het einde


Acties:
  • 0 Henk 'm!

  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 12-09 20:42

The Milkman

█████░░░░░ 50%

Topicstarter
J_Davelaar schreef op 14 september 2004 @ 07:53:
Probeer eens preg_match_all() ;)
Jaaaaa, hij doet et!
Bedankt!

Maar nog 1 vraagje, waarom komt de hele lijst in $match[0] én in $match[1] ?
Dus in principe 2 keer?

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑


Acties:
  • 0 Henk 'm!

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 26-07 16:22

D4Skunk

Kind of Blue

match 0 is altijd de volledige inputstring

Acties:
  • 0 Henk 'm!

  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 12-09 20:42

The Milkman

█████░░░░░ 50%

Topicstarter
D4Skunk schreef op 14 september 2004 @ 09:06:
match 0 is altijd de volledige inputstring
Je hebt gelijk,
weer wat geleerd :)

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Hier heb je toch helemaal geen regexp nodig? Als dit het enigste is wat in een bestand staat...
PHP:
1
2
3
4
5
6
$lines = file('databestand.dat');
$email = array();
foreach($lines as $line)
{
  $email[] = substr($line,9,strlen($line - 10 - 9));
}

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
_/-\o_
Dacht net hetzelfde.
Een substr() is volgens mij veel sneller als een regExp als het dit soort dingen betreft.

Maar
PHP:
1
$email[] = substr($line,9,strlen($line - 10 - 9));
moet natuurlijk wel netjes dit zijn heh ;)
PHP:
1
$email[] = substr($line,9, -9);

* frickY even t even aangepast, op aanraden van NMe84

[ Voor 64% gewijzigd door frickY op 15-09-2004 10:22 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

frickY schreef op 14 september 2004 @ 20:44:
_/-\o_
Dacht net hetzelfde.
Een substr() is volgens mij veel sneller als een regExp als het dit soort dingen betreft.

Maar
PHP:
1
$email[] = substr($line,9,strlen($line - 10 - 9));
moet natuurlijk wel netjes dit zijn heh ;)
PHP:
1
array_push($email. substr($line,9, -9));
Over substr heb je gelijk dat jouw manier wat netter is, maar array_push is echt niet netter dan $array[] = hoor. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Het ziet er uit als een XML-bestand, waarom parse je het dan niet als XML-bestand in php? Zie ook: PHP.net XML Manual

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
NMe84 schreef op 14 september 2004 @ 20:48:
Over substr heb je gelijk dat jouw manier wat netter is, maar array_push is echt niet netter dan $array[] = hoor. ;)
Shit, je hebt nog gelijk ook. (*heeft even n 'bench' gedraaid)
array[] is bij nummerieke waardes gemiddeld 140% sneller dan array_push, en met karakters gemiddeld 114%.... (waarbij 100% even snel is ;) Tis dus 40% sneller.. 0,4x zo snel... dat kan hele secondes schelen bij grote bestanden)

[ Voor 14% gewijzigd door frickY op 15-09-2004 10:21 ]

Pagina: 1