Avatar billede storkie Nybegynder
21. september 2004 - 15:07 Der er 16 kommentarer og
1 løsning

Include i tekst

Jeg skal have lavet nogle include forskellige steder i en tekst.
Sider som skal inlcuderes er skrevet som: [include]test2.php[/include]

Det skal fungere sådan her:

test2.php indeholder: hej med dig.

$besked indeholder:
$besked = "Dette er teksten: [include]test2.php[/include] hvad synes du om den?"

Det skulle til sammen blive til:
Dette er teksten: hej med dig hvad synes du om den?

Håber I forstår hvad jeg mener.
Avatar billede googolplex Novice
21. september 2004 - 15:13 #1
Du kan bruge ob_get_contents() til at fange din include i en variabel:

ob_start();
include('test2.php');
$include = ob_get_contents();
ob_end_clean();
echo "Dette er teksten: $include hvad synes du om den ?";
Avatar billede googolplex Novice
21. september 2004 - 15:15 #2
Men er det ikke smartere, at læse direkte fra filen 'test2.php' ?

$include = file_get_contents('test2.php');
echo "Dette er teksten: $include hvad synes du om den ?";
Avatar billede storkie Nybegynder
21. september 2004 - 15:18 #3
Ja det virker, men skal have alle  [include]siden[/include] omdannet til include(siden) hvordan gør jeg det?
Avatar billede storkie Nybegynder
21. september 2004 - 15:25 #4
$besked = "Dette er teksten: [include]test2.php[/include] hvad synes du om den?"
Skulle omdannes til "Dette er teksten". include(test2.php) ."hvad synes du om den?"

eller

$besked = "Dette er teksten: [include]test2.php[/include] hvad synes du om [include]test5.php[/include] den?"
Skulle omdannes til "Dette er teksten". include(test2.php) ."hvad synes du om". include(test5.php) ."den?"
Avatar billede storkie Nybegynder
21. september 2004 - 15:35 #5
Har prøvet sådan her:
<?
$besked = "[include]test2.php[/include] Det var da godt";

$besked = eregi_replace('\[include]([^]]+)\[/include\]', 'include(\\1)', $besked);
ob_start();
$besked;
$include = ob_get_contents();
ob_end_clean();
echo $include;

?>

Men den viser blot en blank side.
Avatar billede googolplex Novice
21. september 2004 - 15:43 #6
Er det et template system du skal bruge det til, for det har jeg en klasse til kan ?
Avatar billede storkie Nybegynder
21. september 2004 - 15:50 #7
Det er til et cms system, hvor det skal være muligt at include filer på en side. Jeg vil gerne se din klasse
Avatar billede googolplex Novice
21. september 2004 - 15:55 #8
<?php

/**
* @package Googolplex
*/

/**
* Templater class.
*
* Creates pages using a user defined template.
*
* @author Janus Jacob Rønne <janusjr@tdcadsl.dk>
* @copyright The PHP License, version 3.0 ({@link http://www.php.net/license/3_0.txt Read license})
* @package Googolplex
* @version 1.0
*/
class Templater
{
    /**
    * Content items to be insertet into the template.
    *
    * @access private
    * @var array;
    */
    private $Content;
   
    /**
    * User defined delimiters (left & right) used in template.
    *
    * @access private
    * @var array;
    */
    private $Delimiters;
   
    /**
    * Class constructor.
    *
    * @access public
    * @param array|string $startDelimiter
    * @param string $endDelimiter
    */
    public function __construct($startDelimiter = null, $endDelimiter = null)
    {
        $this->Content = array();
       
        if (!isset($startDelimiter))
        {
            $this->Delimiters = array('start' => '[*', 'end' => '*]');
        }
        else if (is_array($startDelimiter))
        {
            $this->Delimiters['start'] = current($startDelimiter);
            $this->Delimiters['end'] = next($startDelimiter);
        }
        else
        {
            $this->Delimiters['start'] = $startDelimiter;
            $this->Delimiters['end'] = $endDelimiter;
        }
    }

    /**
    * Assigns value(s) to template variable(s).
    *
    * @access public
    * @param array|string $templateVar
    * @param string $value
    */
    public function assign($templateVar, $value = null)
    {
        if (is_array($templateVar))
        {
            foreach ($templateVar as $key => $value)
            {
                $this->Content[$key] = $value;
            }
        }
        else
        {
            $this->Content[$key] = $value;
        }
    }
   
    /**
    * Displays the completed page.
    *
    * @access public
    * @param string $templatePath
    */
    public function display($templatePath)
    {
        $page = file_get_contents($templatePath);
       
        foreach ($this->Content as $key => $value)
        {
            $item = $this->Delimiters['start'] . $key . $this->Delimiters['end'];
            $page = str_replace($item, $value, $page);
        }
       
        echo $page;
    }
}

?>

Den er til PHP5, men nem at omskrive.
Avatar billede storkie Nybegynder
21. september 2004 - 15:58 #9
Så vidt jeg kan se løser det ikke mit problem med at omdanne noget til en include.

Kan du give et eksempel til hvordan jeg kan gøre det med overstående klasse?
Avatar billede googolplex Novice
21. september 2004 - 15:59 #10
Jeg ved ikke helt om det kan bruges, måske skal det omskrives lidt. Men ellers kan du godt bruge en løsning med eregi_replace() eller preg_replace(). Måske du kan søge inspiration i det ultimative CMS:

www.etomite.org
Avatar billede googolplex Novice
21. september 2004 - 16:00 #11
Tænker lige videre over noget, ellers kan det være der kommer en anden forbi, der har en løsning på hånden :)

Men skal det bygges op omkring include() ?
Avatar billede storkie Nybegynder
21. september 2004 - 16:00 #12
Hvordan kan jeg gøre det med eregi_replace()?
Avatar billede storkie Nybegynder
21. september 2004 - 16:25 #13
Ingen som kan hjælpe?
Avatar billede storkie Nybegynder
21. september 2004 - 16:36 #14
Det behøves ikke blevet bygget op omkring include() bara man får indholdet af filen vist i den sammenhæng den er sat ind i.
Avatar billede googolplex Novice
21. september 2004 - 17:27 #15
Hvis du fortalte lidt mere om hvad dit CMS skal kunne, så kunne vi måske finde en løsning ?
Avatar billede storkie Nybegynder
21. september 2004 - 19:11 #16
Jeg har fundet en anden løsning. Men tak for hjælpen.
Avatar billede storkie Nybegynder
22. oktober 2004 - 11:00 #17
lukker
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