[PHP]Probleempje met UBB

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb het volgende stukje script:
PHP:
1
2
3
4
$patterns[] = "#\\[email=([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\](.*?)\\[/email\]#is";
$replacements[] = '<a href="mailto:\1">\3</A>';
    
$text = preg_replace($patterns, $replacements, $text);


En dat maakt van het volgende: [email=joe@example.com]Joe[/email] een mooie e-mail link. Echter, nu wil ik eigenlijk het volgende. Ik wil namelijk dit javascriptje gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
<!--
    function noSpam(user,domain) {
    locationstring = "mailto:" + user + "@" + domain;
    window.location = locationstring;
    }

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
-->
</script>

<a href="javascript:noSpam('ik','mijndomein.be')">Ik!</a>


Hiervoor moet dus voor de @ en na de @ van elkaar gescheiden worden, waarna die link er gezet wordt. Ik heb al van alles geprobeerd... en vooral dingen die PHP niet zo leuk vind... :D

[ Voor 10% gewijzigd door Verwijderd op 26-02-2004 21:26 ]


  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
MIsschien omdat je ergens <? enz.. gebruikt? Wat vind php niet echt leuk? enz?

|>


  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
Wat heb je dan geprobeerd? Heb je explode al geprobeerd?

Verwijderd

Topicstarter
Billie schreef op 26 februari 2004 @ 21:30:
Wat heb je dan geprobeerd? Heb je explode al geprobeerd?
Ben ik inderdaad mee bezig geweest, maar ik zie niet helemaal hoe ik dat moet toepassen...

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Verwijderd schreef op 26 februari 2004 @ 21:32:
[...]

Ben ik inderdaad mee bezig geweest, maar ik zie niet helemaal hoe ik dat moet toepassen...
Vrij simpel;

$bla = explode('@', $bla);

en dan krijg je een array bestaand uit de gescheiden stukken :)

overigens kon je dit ook op php.net vinden :P

[ Voor 10% gewijzigd door simon op 26-02-2004 21:33 ]

|>


Verwijderd

Topicstarter
Simon schreef op 26 februari 2004 @ 21:33:
[...]

Vrij simpel;

$bla = explode('@', $bla);

en dan krijg je een array bestaand uit de gescheiden stukken :)

overigens kon je dit ook op php.net vinden :P
Dat had ik ook al door... maar dat krijg ik vervolgens niet gecombineerd met die preg_replace aan het einde... ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Misschien is het handiger om het ff anders te bekijken. In plaats van het weer proberen te splitsen van het email, zou je ook kunnen proberen om in je reguliere expressie de inhoud voor de @ en na de @ al appart te krijgen waardoor je replacement gewoon iets als
PHP:
1
"<a href=\"javascript:noSpam('\\1','\\2')\">\\4</a>"

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op 26 februari 2004 @ 21:37:
Misschien is het handiger om het ff anders te bekijken. In plaats van het weer proberen te splitsen van het email, zou je ook kunnen proberen om in je reguliere expressie de inhoud voor de @ en na de @ al appart te krijgen waardoor je replacement gewoon iets als
PHP:
1
"<a href=\"javascript:noSpam('\\1','\\2')\">\\4</a>"
Daar zat ik inderdaad ook net aan te denken... ik ga even ermee pielen... het resultaat zal ik hier posten... zowel succes als mislukking... :D

Verwijderd

Topicstarter
Ok, probleem is opgelost... :D

Ik gebruik nu dit:
PHP:
1
2
3
4
$patterns[] = "#\\[email=([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)\](.*?)\\[/email\]#is";
$replacements[] = '<a href="javascript:noSpam(\'\\1\',\'\\2\')">\4</A>';
    
$text = preg_replace($patterns, $replacements, $text);

Ik heb welgeteld een ) en een ( erbij moeten zetten... :X zo simpel was het... :X
Pagina: 1