Avatar billede mac10 Nybegynder
01. oktober 2008 - 10:14 Der er 13 kommentarer og
2 løsninger

Erstat text fra ekstern fil, {navn} lig med "Peter"

Hej

Jeg sad og kiggede på parse_ini_file() hvor det er muligt at lave en .ini fil der f.eks. ser sådan her ud:

navn = peter

Og udskrive det sådan:

parse_ini_file('fil.ini');
echo $init[navn];

Jeg vil gerne have det således at når man skriver f.eks. skriver:
echo 'Hej mit navn er {navn}';
Så skal den gå ind og hente {navn} fra en ekstern fil og udskrive f.eks. Peter istedet for {navn}.

Hvordan er dette muligt?

Har prøvet med str_replace, men kan ikke få det til at funke. Har set et par steder hvor folk benytter denne metode, men har altid undret mig over hvordan man gør.

På forhånd tak
Avatar billede majbom Novice
01. oktober 2008 - 10:46 #1
jeg kan ikke helt forstå hvad det er du vil...

vil du at man kan skrive sit navn i en tekstboks f.eks. og så går den ind og erstatter "{navn}" med det navn man har skrevet og gemmer det som en ny fil, eller samme fil?
Avatar billede mac10 Nybegynder
01. oktober 2008 - 11:14 #2
Det jeg vil lave er som følgende:

----------------- shortcut.php -----------------
{navn} = 'Peter';
{hjemmeside} = 'www.minhjemmeside.dk';
{tlf} = '00000000';

----------------- index.php -----------------
Hej mit navn er {navn}. Du kan besøge min hjemmeside på adressen {hjemmeside}. Har du lyst til at kontakte mig kan du ringe på {tlf}. Hygge

----------------- Udskriver når index.php loades -----------------
Hej mit navn er Peter. Du kan besøge min hjemmeside på adressen www.minhjemmeside.dk Har du lyst til at kontakte mig kan du ringe på 00000000. Hygge

:o)
Avatar billede majbom Novice
01. oktober 2008 - 11:34 #3
ville det gøre noget hvis der i shortcut stod:

$navn = "Peter";
$hjemmeside = "www.minhjemmeside.dk";
$tlf = "00000000";

?
Avatar billede mac10 Nybegynder
01. oktober 2008 - 11:44 #4
Ja det er jo bare simpel defination af variabler.

Det skal være sådan at man i et tekstfelt kan skrive nogle værdier, forklædt som {variabel} og så henter den data.
Avatar billede majbom Novice
01. oktober 2008 - 11:54 #5
kan du så ikke bare include shortcut.php i index.php og skrive:

echo "Hej mit navn er $navn. Du kan besøge min hjemmeside på adressen $hjemmeside. Har du lyst til at kontakte mig kan du ringe på $tlf. Hygge
";

i index.php?

eller har jeg misforstået dig?
Avatar billede repox Seniormester
01. oktober 2008 - 12:39 #6
$content = "Hej mit navn er {navn}. Du kan besøge min hjemmeside på adressen {hjemmeside}. Har du lyst til at kontakte mig kan du ringe på {tlf}. Hygge";
    $file = file('stien/til/shortcut.php');
   
    $file = split("\n", $file);
    foreach($file as $line)
    {
        $strings = split("=", $line);
        $rep[trim($strings[0])] = trim($strings[1]);
    }

   
    foreach($rep as $key => $value)
        $content = eregi_replace($key, $value, $content);
   

    echo $content;
Avatar billede repox Seniormester
01. oktober 2008 - 12:40 #7
Havde lige en linie for meget med...

    $content = "Hej mit navn er {navn}. Du kan besøge min hjemmeside på adressen {hjemmeside}. Har du lyst til at kontakte mig kan du ringe på {tlf}. Hygge";
    $file = "{navn} = Peter\n{hjemmeside} = http://minhjemmeside.dk\n{tlf} = 000000";

    foreach($file as $line)
    {
        $strings = split("=", $line);
        $rep[trim($strings[0])] = trim($strings[1]);
    }

   
    foreach($rep as $key => $value)
        $content = eregi_replace($key, $value, $content);
   

    echo $content;
Avatar billede dkfire Nybegynder
01. oktober 2008 - 12:41 #8
Kig på en template system, noget ala smarty måske:
http://www.smarty.net
Avatar billede repox Seniormester
01. oktober 2008 - 12:45 #9
JEg kan slet ikke koncentrere mig idag... Sidste forsøg:

    $content = "Hej mit navn er {navn}. Du kan besøge min hjemmeside på adressen {hjemmeside}. Har du lyst til at kontakte mig kan du ringe på {tlf}. Hygge";
    $file = file('stien/til/shortcut.php');
   
    foreach($file as $line)
    {
        $strings = split("=", $line);
        $rep[trim($strings[0])] = trim($strings[1]);
    }

   
    foreach($rep as $key => $value)
        $content = eregi_replace($key, $value, $content);
   

    echo $content;

Så skulle den vist være der...
Avatar billede olebole Juniormester
01. oktober 2008 - 16:36 #10
<ole>

Når nu man har de to arrays, hvorfor så ikke bruge funktionen, der er beregnet til strengoversættelser strtr:
    http://dk.php.net/manual/en/function.strtr.php

Derudover bør man under _ingen_ omstændigheder bruge foreach-løkker til andet end associative arrays. Aldrig til talindekserede, da en alm. for-løkke er laaaangt hurtigere til dem  ;o)

/mvh
</bole>
Avatar billede repox Seniormester
01. oktober 2008 - 22:52 #11
Du har helt ret, Ole, jeg har ikke lige været i det skarpeste hjørne. Dog vil jeg mene at en foreach løkke er fint til små talindekserede arrays. Selv ville jeg nok bruge en while(), men det gjorde jeg så ikke lige i ovenstående :/
Avatar billede mac10 Nybegynder
03. oktober 2008 - 13:46 #12
Mange tak for dine koder repox, men jeg har en ting at sige - specielt til dkfire:
SMARTY styrer!! :)

Har siddet og arbejdet med smarty, og det sparer mig for meget arbejde, og har forkortet næsten alle mine .php filer med 40%+ da man kan lave foreach, loops, if/else, og meget mere direkte i HTML'en så man egentlig kun behøver at få data skrevet ud med php så man kan arbejde med det.

Så dem jeg faktisk skal takke er Monte Ohrt, Andrei Zmievski, Messju Mohr, Jay Boots, Anne Holz, Frank Kromann og Rasmus Lerdorf :) http://www.smarty.net/credits.php

Men jer der har bidraget til dette indlæg må meget gerne smide et svar for at pege mig den rigtige vej hen!
Avatar billede dkfire Nybegynder
17. oktober 2008 - 10:03 #13
mac10: Der findes vist nok også andre template systemer, men nu lignede det mest et smarty system du ledte efter.
Nogen har prøvet at lave en liste for "noget" tid siden:
http://www.sitepoint.com/forums/showthread.php?threadid=123769

Ud over det, så var der et spørgsmål noget tid tilbage som også omhandlede template, og der var en som kom med et forslag, vil prøve at finde det frem igen.
Avatar billede dkfire Nybegynder
17. oktober 2008 - 10:09 #14
Avatar billede olebole Juniormester
17. oktober 2008 - 10:12 #15
repox >> Jeg har intet imod, du foretrækker en foreach- eller while-løkke. Jeg konstaterer blot, at en alm. for-løkke er langt hurtigere - og da jeg går udfra som selvfølgelighed, at andre kodere også helst skriver den bedst performende kode, fandt jeg det en temmelig relevant kommentar.

Smarty hører til gengæld ikke til blandt de hurtige/effektive koder. Det er tværtimod kendt for elendig performance  =)
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