[PHP] cms - code problem

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Ktm123, 27. Februar 2007 .

Schlagworte:
  1. 27. Februar 2007
    cms - code problem

    Moin


    ich habe vor, mir ein kleines Cms zu schreiben.
    Ich lade ein Template, in dem die platzhalter so dargestellt werden:
    PHP:
    <@
    und
    PHP:
    @>
    Das template wird so eingelesen:

    PHP:
    $filename  $base [ 'template' ];
    $fp  fopen ( $filename , "r" );
    $template  fread ( $fp , filesize ( $filename ));
    fclose ( $fp );  
    Dann wird "<@title@>" im template durch den Name des cms erstetzt. Der name wird aus dem array $base['title'] geladen.

    PHP:
    $template  str_replace ( $base [ 'tag_start' ]. 'title' . $base [ 'tag_end' ], $base [ 'title' ], $template );
    Dann wird das ganze teil ausgegeben:

    PHP:
    echo  $template ;
    Nur leider wird <@title@> nicht durch den title von base['title'] ersetzt.
    Hat jemand eine idee, woran das liegen könnte ?

    thx schonmal

    :]
     
  2. 27. Februar 2007
    AW: cms - code problem

    Sieht mir danach aus, als würde in $base['tag_*'] nicht das richtige drin stehen.

    Reguläre Ausdrücke sind übrigens bequemer.
    PHP:
    function  callback ( $tag )
    {
        global 
    $base ;
        return 
    $base [ $tag ];
    }

    $template  preg_replace_callback ( '#<@[a-z0-9]@>#iU' 'callback' $template );
    Damit werden in einem Rutsch alle Platzhalter durch die passenden Werte aus $base ersetzt
     
  3. 27. Februar 2007
    AW: cms - code problem

    oder du schreibst ne funktion:

    function tpl($tpl)
    {
    fopen $tpl
    fread
    echo
    }

    tpl("name");
     
  4. 27. Februar 2007
    AW: cms - code problem

    Was soll das bringen? Ist doch keine funktionale Verbesserung.
     
  5. 27. Februar 2007
    AW: cms - code problem

    man könnte es auch gleich im preq_replace_callback unter bringen:

    PHP:
       $template  preg_replace_callback ( '#<@[a-z0-9]@>#iU' ,
    // --------------------------------------------------------------------------
         
    create_function (
           
    'global $base;' ,
           
    'return $base[$tag];'
         
    ),
    // --------------------------------------------------------------------------
         
    $template
       
    );
    und wenn man mit class arbeitet kann man aufs global verzichten
     
  6. 2. März 2007
    AW: cms - code problem

    wozu dient bei
    Code:
    $template = preg_replace_callback('#<@[a-z0-9]@>#iU',
    dieses iU am ende?
     
  7. 2. März 2007
    AW: cms - code problem

    PHP: M&ouml;gliche Modifikatoren in RegEx-Suchmustern - Manual
     
  8. 3. März 2007
    AW: cms - code problem

    ok.. scheint so zu klappen !

    danke an alle ...

    ich habe jetzt aber ein neues problem......


    ich lade eine datei, in der das hier als string steht :

    $base['title'] = 'test';


    hat jemand eine idee, wie ich "test" ersetzen könnte ?
    Es muss natürlich dynamisch bleiben, also darf schonmal kein "test" drin vorkommen..
     
  9. 3. März 2007
    AW: cms - code problem

    Was genau willst du?
     
  10. 3. März 2007
    AW: cms - code problem

    ich suche eine möglichkeit, um die variable $base['title'] = 'irgendwas'; zu ändern und wieder in die datei zu schreiben.

    Zb. gibt der benutzer im admin-cp bei "titel des forums" "test" ein. Dann soll die datei geladen werden, $base['title'] = 'irgendwas'; soll zu $base['title'] = 'test' verändert werden und die datei soll wieder abgespeichert werden...
     
  11. 3. März 2007
    AW: cms - code problem

    Ah, habs verstanden.

    Statischen PHP-Coder zu ändern ist recht umständlich. XML ist da als Format komfortabler, da es dafür verschiedene Bibliotheken (libxml, SimpleXML, XMLReader/XMLWriter) gibt.

    Die eleganteste Variante ist aber, die Sprachdaten einfach in einer Datenbank abzulegen.
    Dann kannst du mit einem simplen SQL-Query deine Sprachdaten ändern.
     
  12. 3. März 2007
    AW: cms - code problem

    Geht auch mit php ganz einfach
    PHP:
        $new_text = "<?
    \ $base  ".var_export( $base , true)."
    ?>";
        $handle = fopen ('./libs/config.inc.php', "wb");
        fwrite ($handle, $new_text, strlen($new_text));
        fclose ($handle);
        @chmod ('./libs/config.inc.php', 0777);
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.