[php] replace: alles vervangen wat niet aan het patroon vold

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Nou dacht ik dat ik toch aardig overweg kon met de replace functie, maar ik heb nu iets waar ik niet uitkom.
Ik wil uit een nogal grote file alle email adressen halen, dus dacht om een replace functie te doen en daarbij alles wat niet overeenkomt met een geldig email adres te vervangen in een |, zodat ik het daarna dmv een split in een array kan gooien

Maar hoe vervang je iets wat _niet_ aan het patroon voldoet? Ik kan het gek genoeg nergens vinden. Heb het nog met een ! geprobeerd, maar dat werkte niet.

(ik weet dat dit je dit: [^0-9] kunt gebruiken voor alles wat niet aan een cijfer voldoet, maar ik snap niet hoe ik dat op (\w+\-*)\@{1}(\w+\-?\w+)(\.\w+\-?\w+)*(\.{1}\w{2,4}) zou kunnen toepassen.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Misschien een idee om je werkwijze te veranderen: zoek in de file naar alles wat wel overeenkomt met een emailadres

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
en hoe krijg ik dat er uit dan?
ik wil er natuurlijk wel iets mee gaan doen. alleen matchen is dus niet voldoende.
ik wil al die email adressen bijv. in een array stoppen, zoals ik hierboven al aangaf. Dus als je me kunt vertellen hoe ik dat moet doen....

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

kijk even naar de 'e' modifier in http://www.php.net/pcre.pattern.modifiers

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
ehh...ik niet helemaal snappe hoe mij dat kan helpen :S
If this modifier is set, preg_replace() does normal substitution of backreferences in the replacement string, evaluates it as PHP code, and uses the result for replacing the search string.
Hij doet dus een normale substitutie van wat je opgeeft waar ie op moet zoeken, maar wat ie extra doet is dat wat ie vindt als php code bekijken en het resultaat van die php code als vervanging gebruiken. Zo begrijp ik het?

Hoe kan ik dat zo gebruiken dan dat ik een array met alle email adressen krijg? (Of die email adressen op een andere manier kan isoleren)

Ik heb uiteraard ff die /e in m'n preg_replace gezet om te kijken wat dat deed, maar heb daar op die manier dus nix aan.

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
marty schreef op 11 November 2002 @ 00:27:
en hoe krijg ik dat er uit dan?
ik wil er natuurlijk wel iets mee gaan doen. alleen matchen is dus niet voldoende.
ik wil al die email adressen bijv. in een array stoppen, zoals ik hierboven al aangaf. Dus als je me kunt vertellen hoe ik dat moet doen....
met preg_match_all krijg je een array terug met de matches. hoef je ook niets te splitten.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

marty schreef op 11 November 2002 @ 01:17:
ehh...ik niet helemaal snappe hoe mij dat kan helpen :S


het voert bij elke match de door jouw meegegeven code uit. Die code kan bijvoorbeeld code zijn om het in een array te stoppen.
Maar preg_match_all lijkt me een betere oplossing

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1