Avatar billede allandk Nybegynder
28. november 2002 - 13:15 Der er 15 kommentarer og
1 løsning

Kan man få php til at parse en included fil?

Jeg er ved at lave et familienyhedbrev der sendes ud om html. Det går fint;

1. hvis jeg skriver html-historien direkte i min mail-funktion
2. hvis jeg laver en fopen

Det går knap så godt når jeg prøver at ay include den:

• $attachment = include("nyhedsbrev.htm");

Grunden til, at jeg vil include filen, er, at jeg henter noget godt fra en database.

Findes der et eller andet trick så man kan skrive:

$attachment = PARSE(include("nyhedsbrev.htm"));


ab:)
Avatar billede xyborx Nybegynder
28. november 2002 - 13:20 #1
Prøv at læse om create_function og eval:
http://www.php.net/manual/en/function.create-function.php
http://www.php.net/manual/en/function.eval.php
Har ikke selv leget med de to, men en af dem skulle nok kunne klare opgaven :)
Avatar billede xyborx Nybegynder
28. november 2002 - 13:21 #2
(Ved nærmere eftetanke tror jeg at jeg har misfortstået spørgsmålet.. sorry)
Avatar billede allandk Nybegynder
28. november 2002 - 13:24 #3
Alt i orden :-)
Avatar billede hornuff Nybegynder
28. november 2002 - 13:48 #4
Include understøtter (desværre) kun at includere PHP-source. Derfor kan du desværre ikke include'e almindeligt HTML.
Hvis du alligevel siger: Det SKAL lade sig gøre.
så lav siden, så den starter med <?php ?>

og slutter med <? ?>

Så ser PHP at det er en PHP-fil med en HTML sektion.

Alternativt er fopen() nok den eneste mulighed.
Avatar billede hornuff Nybegynder
28. november 2002 - 13:49 #5
Vi prøver lige igen:

Start på html-fil: <?php ?>

Slut på html-fil: <? ?>
Avatar billede xyborx Nybegynder
28. november 2002 - 13:54 #6
Hvis du vil have vist HTML-koderne på siden, så kan du prøve med det her:
function vis_html_fil($filnavn)
{
$indhold_array=file($filnavn);
$indhold=implode('',$indhold_array);
return nl2br(htmlentities($indhold));
}
Personligt ville jeg foretrække en forkortet men mere kompliceret udgave:
function vis_html_fil($filnavn)
{
return nl2br(htmlentities(implode('',file($filnavn))));
}
Avatar billede allandk Nybegynder
28. november 2002 - 14:00 #7
>> xyborx: jeg tester løs...
Avatar billede allandk Nybegynder
28. november 2002 - 14:13 #8
>> xyborx: nixenbixen :-(
Avatar billede xyborx Nybegynder
28. november 2002 - 14:14 #9
Øv bøv.. :/
Men held og lykke med det ;)
Avatar billede allandk Nybegynder
28. november 2002 - 14:16 #10
Takker :-)
Avatar billede Noone Nybegynder
28. november 2002 - 17:03 #11
Du sætter variablen $attachment i din include fil til  at være indholdet af mailen (Husk escapes etc.)

Noget i stil med det her:

------ mail.inc ------

$attachment = "Mit mail indhold
som nu nok fylder mere end
en linje og som indholder ting
fra variablen \$noget som lige nu
er sat til {$noget}";

---- end mail.inc ----

------ fil.php ------

//Noget kode der henter værdiger fra en database.
include("mail.inc");
mail($to,$subject,$attachement);

---- end fil.php ----

Det skulle gøre tricket... I hvertfald virker det for mig et par steder.
Avatar billede allandk Nybegynder
28. november 2002 - 19:56 #12
Det virker desværre ikke for mig. Den tolker ikke mine $var og dem henter heller ikke noget fra db...
Avatar billede Noone Nybegynder
29. november 2002 - 05:22 #13
Husker du at lave filerne korrekt?

Her er hvordan include fungere...

Du har to filer.. a.php og a.inc

a.php indholder dette:
-------------------
<?
echo "dette er a.php";
include("a.inc");
?>
--------------------

a.inc ser sådan her ud:
--------------------
<?
echo "dette er a.inc";
?>
--------------------

PHP parseren vil opfatte de to filer sådan her:

<?php
echo "dette er a.php";
?>
<?php
echo "dette er a.inc";
?>
<?php
?>
--------------------

Så hvis du tildeler en variabel indholdet af mailen i en fil du inkludere EFTER du har tildelt de variabler der bruges i mailen en værdi, så vil det virke.. Dog har jeg kun forsøgt i tilfælde hvor mailen kun sendes til en modtager.
Avatar billede allandk Nybegynder
29. november 2002 - 11:06 #14
>>chanoa: dit eksempel virker fint, men når jeg overfører eksemplet til det egentlige formål kikser. Jeg bruger en forespørgsel til min db og dét vil den altså ikke håndtere.

Smider du et svar?

ab:)
Avatar billede Noone Nybegynder
29. november 2002 - 11:54 #15
Hmmm.. Tror det vil lykkes hvis du placere include() efter hver eneste gang du ændre variablerne burde det virke. Og husk at includede filer skal starte of slutte med <?php ?> ellers bliver de ikke parset.

Og nej, smider ikke et svar.. Gi' point til en anden, eller snup dem selv.
Avatar billede allandk Nybegynder
29. november 2002 - 12:01 #16
Den er go' - tak for indsatsen chanoa :-)

ab:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester