Ga naar inhoud

PHP: Mailing dmv HTML-template


anoniem

Aanbevolen berichten

Wat ik wil doen is het volgende: ik wil mbv een PHP-script, een HTML-mail versturen. Het PHP-script moet een vooraf in elkaar gezette HTML-pagina openen en placeholders* vervangen voor de waarden welke ik later aan kan passen. (Denk bv aan [ontvanger], [afzender], [website] en [inhoud].) De vraag is nu als volgt: Kan iemand mij vertellen hoe ik een PHP-script een HTML-pagina als template voor een mail kan laten gebruiken? En de placeholders*, hoe moet ik dat aanpakken? *placeholders= woorden/tekenreeksen welke worden vervangen door andere tekst... Alvast bedankt voor jullie hulp! :lol: Stefan. Stefan@Frontaal-Online.com
Link naar reactie
[quote:82de2ac54f="gerben"]Kijk eens in de php documentatie naar regular expressions. Je kunt daarmee een tekststring vervangen door een variabele. Als je de variabelen vat in een array, kun je in een slag alles in het template plakken.[/quote:82de2ac54f]Een regular expression lijkt me hier niet echt van toepassing. RE's gebruik je om patterns te beschrijven en in dit geval zoek (en vervang) je alleen maar een aantal vaststaande tekstfragmenten. [size=9:82de2ac54f](dit wil natuurlijk niet zeggen dat het niet mogelijk is met RE's)[/size:82de2ac54f]
Link naar reactie
[b:5ced571f36]Annie schreef:[/b:5ced571f36] [quote:5ced571f36]Een regular expression lijkt me hier niet echt van toepassing. RE's gebruik je om patterns te beschrijven en in dit geval zoek (en vervang) je alleen maar een aantal vaststaande tekstfragmenten. (dit wil natuurlijk niet zeggen dat het niet mogelijk is met RE's) [/quote:5ced571f36] Wat dan wel volgens jou? Hoe moet ik het dan doen?
Link naar reactie
Annie: Regular expressions zijn hier ideaal. Er zijn vele wegen die naar rome leiden, en dit is er een van. En wel degene die mij het beste bevalt. Stefan: Ik heb je een duwtje in een bepaalde richting gegeven. Hiermee is het op te lossen, als je er wat tijd in wilt steken. Kan het je natuurlijk ook wel voorkauwen, maar het is de vraag of je daar iets aan hebt.
Link naar reactie
[quote:1b7bdbc93c="gerben"]Annie: Regular expressions zijn hier ideaal. Er zijn vele wegen die naar rome leiden, en dit is er een van. En wel degene die mij het beste bevalt. [/quote:1b7bdbc93c] Met de eerste zin ben ik het niet helemaal eens. Je kan inderdaad RE's gebruiken, maar ideaal zijn ze niet. Wat de topicstarter wil bereiken kan met simpele string vervangingen. Ik zie het een beetje als het doodschieten van een mug met een kanon. ;)
Link naar reactie
Denk dat we een beetje langs elkaar heen praten. Of je hebt gewoon lange tenen... Als je html template hebt met een stuk of twintig te vervangen strings. Die ga jij dan dus vervangen met twintig aparte string vervangingen. Met als gevolg, dat je bij elke wijziging van de strings in de template dus ook een stringvervanging moet wijzigen. Met een eenvoudige regex doe je het in een keer, al heb je honderd strings. En je hoeft ook nooit weer iets aan die regex te wijzigen.
Link naar reactie
Net alsof je bij regular expressions niet zelf moet aangeven waar naar gezocht dient te worden en wat er vervolgens vervangen moet worden? :-? Als je alleen een aantal variabelen zoals "[inhoud]" etc wil vervangen (en dat wil de topicstarter), zijn regular expressions vertragend en enorm overkill (en nog lastiger ook)...
Link naar reactie
Als de variabelen tussen vaste tekens (bijvoorbeeld $) plaatst, kun je daarop zoeken, en de tekst ertussen variabel laten. De (variabele) tekst kun je eruit vissen, en die gebruiken in een named array. Kan best overkill zijn, maar ik vind het bijzonder handig werken, en doe het al jaren zo, zij het in perl. Bijvoorbeeld: $text =~ s/\$(\w+)?\$/$array{$1}/g; Dit ziet er naar mijn idee heel wat eleganter uit dan twintig keer replacen, en is bovendien onderhoudsvrij.
Link naar reactie
[quote:3486ef2710="gerben"]Dit ziet er naar mijn idee heel wat eleganter uit dan twintig keer replacen, en is bovendien onderhoudsvrij.[/quote:3486ef2710] Over de elegantie van RE's verschillen we dan inderdaad van mening. Ik gebruik ze ook al jaren, maar vind ze er nog steeds uitzien als een obscure geheimtaal die z'n best doet er zo onlogisch mogelijk uit te zien ;) Dat het een krachtige tool is (kan zijn) ben ik natuurlijk wel met je eens. Verder lullen we misschien inderdaad een beetje langs elkaar af. Maar ik wil alleen maar aangeven dat het in PHP geen extra onderhoud vergt om meerdere string replaces te doen. Jij bouwt een named array met vervangingen, ik ook. Aan de string replace functies van PHP kan je namelijk ook arrays meegeven. Het voordeel wat je dan hebt is: [list=1:3486ef2710] [*:3486ef2710]dat je je niet hoeft te verdiepen in de wondere wereld van RE's [*:3486ef2710]dat je niet de extra overhead van de RE's hebt (het is per geval natuurlijk anders, maar in de meeste gevallen zijn de RE's toch beduidend langzamer dan een str_replace) [*:3486ef2710](beetje flauw) en strikt genomen is de string replace oplossing een zuiverdere oplossing, omdat alleen de tekstfragmenten die in de array staan vervangen worden. [/list:o:3486ef2710] Maar nogmaals, het kan inderdaad ook heel goed met RE's.
Link naar reactie
Wat wellicht ook verwarrend werkt, is dat er in perl niet zoveel verschil is tussen een string replace en een regex. Er is wel een speciale module voor (HTML::Template), maar die is pas ontwikkeld toen ik deze methode allang gebruikte. Schijnen ook weer diverse haken en ogen aan te zitten. Regexes zijn inderdaad niet bepaald makkelijk leesbaar. Maar al doende leert men. Ik kalk ze nu zo neer, zonder er veel over na te hoeven denken. Maar het blijft uitkijken met bijvoorbeeld 'greedyness', voor je het weet, doen ze heel iets anders dan jij bedoeld hebt. Maar blijkbaar zitten er wel bepaalde voordelen aan de perl regexes, aangezien de perl libraries aan php zijn toegevoegd, en je nu dus in principe 'gewone' perl regexes in php kunt gebruiken.
Link naar reactie
Nou allemaal, hartelijk bedankt voor jullie hulp, maar ik snap er echt geen moer van waar jullie het allemaal over hebben! Ik heb ooit weleens moeite gedaan om PHP te begrijpen, maar dat is toen niet gelukt en nu niet de bedoeling.. Ik ben op zoek naar iets dat ik zo kan gebruiken en niet zoveel moeite voor hoef te doen... (Sorry, maar k ben wel eerlijk.) Mijn complete website is HTML, dus dit zal ook het enige dynamische (PHP) gedeelte zijn. Mocht er iemand zoiets thuis op z'n harde schijf hebben staan, laat t me even weten... Of als je bijvoorbeeld een goede uitleg (en dan wel simpel graag) weet, laat t me dan ook even weten.. Maar het bekvechten over hetgeen het beste is, daar zit ik niet op te wachten.. Sorry, als ik misschien wat bot over kom (dit is echt NIET zo bedoeld), maar ik loop hier nu al een half jaar mee te klooien en het wordt behoorlijk frustrerend! Met vriendelijke groet, Stefan Nagtegaal. Stefan@Frontaal-Online.com
Link naar reactie
[quote:b8fe8d7a11="Stefan Nagtegaal"]Nou allemaal, hartelijk bedankt voor jullie hulp, maar ik snap er echt geen moer van waar jullie het allemaal over hebben! [/quote:b8fe8d7a11] Dat kan gebeuren. [quote:b8fe8d7a11="Stefan Nagtegaal"]Maar het bekvechten over hetgeen het beste is, daar zit ik niet op te wachten..[/quote:b8fe8d7a11] Nou ja, bekvechten?.. Een klein verschil van mening ;) Maar verder geven we wel twee mogelijkheden waarmee je het zou kunnen oplossen. [quote:b8fe8d7a11="Stefan Nagtegaal"]Sorry, als ik misschien wat bot over kom (dit is echt NIET zo bedoeld), maar ik loop hier nu al een half jaar mee te klooien en het wordt behoorlijk frustrerend![/quote:b8fe8d7a11] Jouw frustratie mag natuurlijk nooit een reden zijn om mensen die je alleen maar proberen te helpen te beledigen door zo om te springen met hun hulp. Ook al bied je meteen een halfbakken excuus aan. [ironie] Van mij hoef je i.i.g. geen hulp meer te verwachten. Misschien zeg ik het een beetje bot (is niet zo bedoeld), maar ik heb een beetje een k-dag gehad. [/ironie] No hard feelings, of course.
Link naar reactie
[quote:418f237c26="Stefan Nagtegaal"]Ik ben op zoek naar iets dat ik zo kan gebruiken en niet zoveel moeite voor hoef te doen... (Sorry, maar k ben wel eerlijk.)[/quote:418f237c26]Gelukkig zijn onze regels ook heel duidelijk: scriptrequests zijn verboden en dit topic gaat dus op slot. Dat je zo omspringt met onze hulp, zint mij ook niet echt. Ik sluit me wat dat betreft bij Annie aan.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...