[PHP] preg_replace, email@email.com > email AT email DOT com

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Even een n00b preg_replace vraagje :)

Om spambots het minder goed mogelijk te maken om emailadressen van mijn gebruikers op mijn site te rippen wil ik email@email.com veranderen naar email AT email DOT com

Nu heb ik daarvoor de volgende preg_replace voor gemaakt:

preg_replace("/\@/ A /", "/\.(\w+)$/ $1/", $string);

Ik krijg nu deze foutmelding:

Warning: Unknown modifier '/' in c:\phpdev\www\intern\driverfiles\my_plugins\modifier.spamfilter.php on line 23

Iemand enig idee wat er fout aan is ? :|

Acties:
  • 0 Henk 'm!

Verwijderd

Geen id, ik gebruik zelf
PHP:
1
2
     $email = str_replace("@"," at ",$_GET['email']);
     $email = str_replace("."," dot ",$email);

De simpele versie, maar werkt prima :)

Acties:
  • 0 Henk 'm!

  • tomic
  • Registratie: December 2000
  • Laatst online: 17-09 15:37

tomic

Smexylittlebabe!

Klinkt wel grappig, maar kunnen die bots een email AT domein DOT COM niet weer terug vertalen?

[ Voor 18% gewijzigd door tomic op 23-01-2004 12:23 ]

Toch maar een weblog?


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Je hoeft inderdaad geen regexp te gebruiken als je altijd AT en DOT (met de spaties)gebruikt, alhoewel al was opgemerkt dat bots dat waarschijnlijk wel kunnen vertalen. Over je regexp: je pattern delimiters zijn de / - tekens en die staat er na de (\w+)$ geunescaped in. Dat betekent dat de pattern daar ophoudt, terwijl $1/ er nog achterstaat. Dit ziet de regexp engine dan als pattern modifiers. :)

edit: en dan nog snap ik geen hout van je regexp ;).

[ Voor 9% gewijzigd door RedRose op 23-01-2004 12:33 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
en dan nog snap ik geen hout van je regexp .
:) ik ben er ook erg slecht in.

Maar ik zal str_replace gebruiken. Wilde ik eigenlijk niet doen omdat bij een emailadres als bla.bla.bla.naam@email.com het er uit komt te zien als bla dot bla dot bla dot at email dot com :) en dat is niet echt helemaal wat ik wil, maar goed.. :)

>Klinkt wel grappig, maar kunnen die bots een email AT domein DOT COM niet >weer terug vertalen?
Sommige wel en sommige niet :) Stel dat er 10 van zulke bots zijn, 5 intelligentere en 5 domme bots, dan schilt dat toch spam van 5 van die bots :) PHP.net doet dit namelijk ook, daar heb ik het dan ook van afgekeken 8)

[ Voor 32% gewijzigd door Verwijderd op 23-01-2004 12:40 ]


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 21:10

pietje63

RTFM

tomic schreef op 23 januari 2004 @ 12:23:
Klinkt wel grappig, maar kunnen die bots een email AT domein DOT COM niet weer terug vertalen?
Wilde ik ook zeggen
Een betere optie is de @ en de . weer te geven door middel van plaatjes (of het hele e-mail adres dmv een dynamisch plaatje)

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 23 januari 2004 @ 12:39:
[...]

:) ik ben er ook erg slecht in.

Maar ik zal str_replace gebruiken. Wilde ik eigenlijk niet doen omdat bij een emailadres als bla.bla.bla.naam@email.com het er uit komt te zien als bla dot bla dot bla dot at email dot com :) en dat is niet echt helemaal wat ik wil, maar goed.. :)
Als je alle AT en DOT's dan weer met dezelde str_replace (maar dan andersom) weer terugzet, is er niet zoveel aan hand lijkt me. ;) Anders moet je inderdaad alleen de laatste punt wijzigen en dat moet dan wel met een regexp.

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

tomic schreef op 23 januari 2004 @ 12:23:
Klinkt wel grappig, maar kunnen die bots een email AT domein DOT COM niet weer terug vertalen?
Misschien is het daarom handing om i.p.v. AT en DOT iets anders te gebruiken.
+ Hoe ga je om met een mailadres als DOTCOMAT@DOTCOM.COM? Na de vertalling staat er dan DOTCOMATATDOTCOMDOTCOM. Wa nu? :) Beetje overdreven voorbeeld maar je snapt wat ik wil zeggen.

Misschien kun je in die conversie een non-mail-valid-character (zelf verzonnen term uiteraard ;)) gebruiken of een unicode character wat niet in de standaard ascii tabel zit?

[ Voor 17% gewijzigd door Verwijderd op 23-01-2004 13:05 . Reden: Toevoegen van een oplossing is ook wel zo handig he ]


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 23 januari 2004 @ 13:03:
[...]


Misschien is het daarom handing om i.p.v. AT en DOT iets anders te gebruiken.
+ Hoe ga je om met een mailadres als DOTCOMAT@DOTCOM.COM? Na de vertalling staat er dan DOTCOMATATDOTCOMDOTCOM. Wa nu? :) Beetje overdreven voorbeeld maar je snapt wat ik wil zeggen.

Misschien kun je in die conversie een non-mail-valid-character (zelf verzonnen term uiteraard ;)) gebruiken of een unicode character wat niet in de standaard ascii tabel zit?
Spaties mogen nog steeds niet in e-mailadressen. ;)

Dus een str_replace op of naar spatieATspatie is wel geldig. :)

Voor DOT is dat hetzelfde.

Nog even geprutst:
PHP:
1
2
3
4
5
$email = "mooh.mooh@splut.waah.blaaa.com";

$mooh = preg_replace("/^(.+)@(.+)+\.([a-zA-Z]+)$/",'\\1[AT]\\2[DOT]\\3',$email);

echo $mooh;
Deze checkt dus niet op de geldigheid van een emailadres, maar dat is eenvoudig in te bouwen. en van [AT] naar @ is dus andersom ;)

[ Voor 33% gewijzigd door RedRose op 23-01-2004 13:25 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

RedRose schreef op 23 januari 2004 @ 13:06:
[...]
Spaties mogen nog steeds niet in e-mailadressen. ;)
Okee gebruik je een spatie voor de @ maar voor de . (de DOT)?

[ Voor 3% gewijzigd door Verwijderd op 23-01-2004 13:07 ]

Pagina: 1