Vraag & Antwoord

Webprogrammeren & scripting

PHP: Mailing dmv HTML-template

17 antwoorden
  • 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
  • HTML openen en een string replace gebruiken. Zo lastig is dat niet...
  • 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="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]
  • [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?
  • 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.
  • [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. ;)
  • 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.
  • 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)...
  • 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.
  • [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.
  • 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.
  • Waarom de string [ontvanger] uberhaubt vervangen? Gebruik <?= $ontvanger ?> (of <?php echo $ontvanger ?>) ipv [ontvanger] en je probleem is opgelost. :D
  • Heb je het al geprobeerd? Doe het anders eens, en je snapt heel snel waarom...
  • 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
  • [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.
  • [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.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.