Kom ihåg mig?
Home Menu

Menu


PHP include i html fil med {inkludera här}

 
Ämnesverktyg Visningsalternativ
Oläst 2009-07-26, 21:47 #1
Leons avatar
Leon Leon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2006
Inlägg: 519
Leon Leon är inte uppkopplad
Mycket flitig postare
Leons avatar
 
Reg.datum: Feb 2006
Inlägg: 519
Nu har ja googlat i nästan 2 timmar och läst på 20-30 olika tutorials.

Men det finns inte en enda som verkar beskriva hur man gör för att inkludera en fil i html med php stöd.
Finns bara hur man inkluderar antingen i toppen eller i slutet, eller bara just det typ.

Till ex såhär:
index.php - ska alltså innehålla nått som gör detta:
$Där {INCLUDE HERE} i template filen är då ska denna fil 'meny.html' inkluderas


index_template.html
bla bla bla
bla bla bla
{INCLUDE HERE}
bla bla bla


Såhär ser EN BIT av min index.php fil ut just nu:
Kod:
<?php 

switch ($_GET['f']) {
	default:
 *include "indextemplate.html";
	break;
}

?>
Och i indextemplate.html vill ja kunna skriva {INCLUDE HERE} Så ska allt inkluderas från en annan fil JUST DÄR och ingen annan stans.
Frågan är bara vad ja ska skriva i php filen för att den ska fixa det.
Leon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-26, 23:36 #2
mr_lundis mr_lundis är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 218
mr_lundis mr_lundis är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 218
Det finns flera möjliga alternativ. Du kan använda PHP's Output Buffer för att fånga upp det (genererade) innehållet från filerna du inkluderar. Därefter får du söka igenom innehållet du buffrat upp och göra en search/replace för att sedan inkludera nästa fil - och börja om från början. Jag skulle antagligen implementera detta som en rekursiv funktion...

En annan lösning skulle vara att öppna upp filen för läsning och gå igenom den rad för rad istället för hela filen på en gång. Alternativ 2 innebär att PHP-kod i filen inte kommer att exekveras.
mr_lundis är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 08:12 #3
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Vet inte riktig vad du far efter men php:s include() kommando inkluderar en fil på stället.
Sen att få php-kommandon att tolkas i en fil som slutar på .html kräver väl att du ställer in mime-typen så att även .html-filer går genom php-tolken. Annars är det enklare att byta ändelse på den fil du inkluderar.
Men det kanske inte var det du tänkte uppnå?
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 08:26 #4
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Hmm .. du får kanske göra en egen includefunktion som tar en html-fil som argument, och den fil som den ska inkludera som andra argument. Sen parsar du igenom första argumentet och letar upp {include here} och sen ersätter det med <?php include(andra argumentet); ?> ... eller något sånt? Iofs kanske det inte går så bra att skriva i den, men jag tror att en egen funktion är vägen att gå..
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 10:35 #5
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
$fh = fopen('indextemplate.html', 'r');
while(!feof($fh)) {
$line = fgets($fh);
if(strpos($line, '{INCLUDE HERE}') !== false) {
$include = file_get_contents('includefile');
$line = str_replace('{INCLUDE HERE}', $include, $line);
}
echo $line;
}
fclose($fh);

eller kortare (men något ineffektivare):

$file = file_get_contents('indextemplate');
$include = file_get_contents('includefile');
$file = str_replace('{INCLUDE HERE}', $include, $file);
echo $file;
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 13:19 #6
Leons avatar
Leon Leon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2006
Inlägg: 519
Leon Leon är inte uppkopplad
Mycket flitig postare
Leons avatar
 
Reg.datum: Feb 2006
Inlägg: 519
Citat:
Originally posted by emilv@Jul 27 2009, 10:35
$fh = fopen('indextemplate.html', 'r');
while(!feof($fh)) {
* *$line = fgets($fh);
* *if(strpos($line, '{INCLUDE HERE}') !== false) {
* * * *$include = file_get_contents('includefile');
* * * *$line = str_replace('{INCLUDE HERE}', $include, $line);
* *}
* *echo $line;
}
fclose($fh);

eller kortare (men något ineffektivare):

$file = file_get_contents('indextemplate');
$include = file_get_contents('includefile');
$file = str_replace('{INCLUDE HERE}', $include, $file);
echo $file;
Det här låter som det är något att gå vidare på iaf.
Men istället för att man måste skriva om det är "just den filen" då man kanske använder många såna här:
Kod:
switch ($_GET['f']) {
case "1":
 include "file.html";
break;
Går det inte att "ta bort"
$file = file_get_contents('indextemplate');
den delen av koden på nått sätt och göra så det funkar på alla tänkabara template filer?
Leon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 13:27 #7
Leons avatar
Leon Leon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2006
Inlägg: 519
Leon Leon är inte uppkopplad
Mycket flitig postare
Leons avatar
 
Reg.datum: Feb 2006
Inlägg: 519
Citat:
Originally posted by Magnus_A@Jul 27 2009, 08:12
Vet inte riktig vad du far efter men php:s include() kommando inkluderar en fil på stället.
Sen att få php-kommandon att tolkas i en fil som slutar på .html kräver väl att du ställer in mime-typen så att även .html-filer går genom php-tolken. Annars är det enklare att byta ändelse på den fil du inkluderar.
Men det kanske inte var det du tänkte uppnå?
Ja bryr mig inte om vilken filändelse det är på filen, bara det funkar.
Leon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 13:39 #8
Leons avatar
Leon Leon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2006
Inlägg: 519
Leon Leon är inte uppkopplad
Mycket flitig postare
Leons avatar
 
Reg.datum: Feb 2006
Inlägg: 519
Istället för att lägga koden utanför "case 1" "case 2" osv
Så skrev ja om koden inann för VARJE "case" och då funkar det riktigt bra.
Precis som ja vill.

Så istället för:
Kod:
<?php

switch ($_GET['f']) {
default:
 include "indextemplate.html";
break;
}

?>
Så blir varje såhär istället (lite mer jobb, men det blir exakt som ja vill):
Kod:
switch ($_GET['f']) {
	case "1":
 $file = file_get_contents('indextemplatefile.html');
 $include = file_get_contents('included.html');
 $file = str_replace('{INCLUDED}', $include, $file);
 echo $file; 
	break;
Hällst skulle ja vilja skriva nån kod utanför så ja slapp skriva om den i alla case, men det får vara som det är nu då det funkar precis som ja vill (^_^)

Tack ska du ha för den kodsnutten
Leon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 14:35 #9
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Du kan sätta en variabel vid varje case, och köra min kod efteråt (där du använder variabeln för att bestämma vilken fil som ska inkluderas). Det är extremt grundläggande kunskaper.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-07-27, 14:40 #10
mr_lundis mr_lundis är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 218
mr_lundis mr_lundis är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 218
Inte överväg att faktiskt använda en redan existerande template-motor istället för att skriva din egna?

Lista med 19 st mer eller mindre bra templete-motorer:
http://www.webresourcesdepot.com/19-promis...mplate-engines/
mr_lundis är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 20:22.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017