strtolower geht leider nicht

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • strtolower geht leider nicht

    hi,

    ich bin mir nicht sicher, wodran das jetzt liegen könnte, aber ich beschreib das problem jetzt einfach mal und der weg zu dem problem.

    ich benutze eine funktion die mir bei meinem template system helfen soll den include von header, footer oder anderen dateien vereinfachen soll.

    dazu habe ich nen marker im teplate gesetzt der zum teil den namen der zu includieren datei beeinhaltet.

    damit alle marker einheitlich sind, ist auch dieser komplett groß geschrieben.
    Hier also das Template (roh fassung):
    PHP Code:
    <h1>Willkommen</h1>
    {
    TEMPLATE.NAVIGATION
    nun habe ich dazu dieses preg_replace:
    PHP Code:
        $pattern        = array(
                                    
    '#\{GLOBAL.NAVIGATION\}#s',
                                    
    '#\{GLOBAL.CONTENT\}#s',
                                    
    '#\{TEMPLATE.(.*?)\}#s'
                                
    ) ;
                            
        
    $replace        = array(
                                    
    $global['navigation'],
                                    
    $global['content'],
                                    
    file2template('$1''tpl/')
                          ) ;

        
    $tpl            preg_replace($pattern$replace$tpl) ; 
    und will $1 in dieser function für ein file_get_contents verwenden.
    ich hab hier erstmal nur die ausgabe gemacht um den string zur datei zu checken.
    PHP Code:
        function file2template($file$path) {
            
    $file strtolower($file) ;
            return 
    './'.$path.$file.'.html' ;
        } 
    jetzt hab ich leider das problem, das dass strtolower nicht funktioniert.
    es kommt immer noch großschreibung bei raus:
    PHP Code:
    Willkommen
    ./tpl/NAVIGATION.html 
    erschwerend, kommt der umstand hinzu, das ich nicht weiß, warum das hier auch nicht wirklich klappt:

    hat da vielleicht jmd ne idee?
    PHP Code:
        function file2template($file$path) {
            
    $file strtolower($file).'.html' ;
            
    $file file_get_contents('./'.$path.$file) ;
            return 
    $file ;
        } 
    selbst wenn ich den marker einfach direkt klein schreibe wirft es folgenden fehler aus:
    PHP Code:
    Warningfile_get_contents(./tpl/$1.html) [function.file-get-contents]: failed to open stream
    No such file or directory in .../dev/saunafachartikel/library/parser.content.php on line 15 
    Last edited by xJonx; 03-04-2008, 09:08.
    Design & Coding with a breeze of madness at xjonx

  • #2
    Re: strtolower geht leider nicht

    Original geschrieben von xJonx
    hat da vielleicht jmd ne idee?
    Ja, in deiner file2template()-Funktion verwendest du nicht strtolower, sondern strtoupper

    Peinlich!
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Comment


    • #3
      Wenn du strtoupper verwendest darfst du auch nicht das Verhalten von strtolower erwarten ...
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Comment


      • #4
        peinlich: ja ... aber ich hatte vorhin einfach strtoupper getestet und marker klein geschrieben ... geht leider auch nicht ...
        Design & Coding with a breeze of madness at xjonx

        Comment


        • #5
          Zu deinem 2. Problem:

          file2template('$1', 'tpl/') übergibt tatsächlich als Parameter nur $1 (den String!) und "tpl". Damit deine Variable $1 ausgewertet werden kann, musst du die Anführungszeichen wegmachen, also file2template($1, 'tpl/');

          P.S.: Brichst du bitte die Fehlermeldung noch um? Hab lange Scrollbalken
          Last edited by Shurakai; 03-04-2008, 08:36.
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Comment


          • #6
            das gibt aber leider dieses hier aus:
            PHP Code:
            Parse errorsyntax errorunexpected T_LNUMBERexpecting T_VARIABLE or '$' 
            in .../saunafachartikel/library/parser.content.php 
            on line 28 
            hmmmm
            Design & Coding with a breeze of madness at xjonx

            Comment


            • #7
              Original geschrieben von xJonx
              hmmmm
              Logisch, PHP versucht das $1 als PHP-Variable zu behandeln, in Wirklichkeit ist es aber ein «Regex-Callback», deshalb musst du es maskieren: \$1
              Gruss
              H2O

              Comment


              • #8
                ja, nur das dann dieses hier hervorbringt:
                PHP Code:
                WarningUnexpected character in input'\' (ASCII=92) state=1 in 
                .../saunafachartikel/library/parser.content.php on line 28 
                Design & Coding with a breeze of madness at xjonx

                Comment


                • #9
                  wenn ich aber, das ganze so mache ... also erstmal ohne den file_get_contents
                  PHP Code:
                  function file2template($file$path) {
                          
                  $file strtolower($file).'.html' ;
                          return 
                  $file ;
                      } 
                  dann kommt schon mal das richtige raus ... aber: halt nicht in klein, sondern wie es im template steht leider groß ...

                  dazu verwende ich jetzt das hier:
                  PHP Code:
                  file2template("$1"'tpl/'
                  wenn ich aber dann den wert $file für die datei verwenden will, ist es
                  wieder $1 ...
                  Design & Coding with a breeze of madness at xjonx

                  Comment


                  • #10
                    Wie wäre es, wenn du die Funktion preg_replace_callback() mal ausprobieren würdest?

                    Comment


                    • #11
                      danx ...

                      ich hab es jetzt so gelöst
                      PHP Code:
                          function file2template($file) {
                              return 
                      file_get_contents('./tpl/'.strtolower($file[1]).'.html') ;
                          }
                          
                          
                      $tpl            preg_replace_callback('#\{TEMPLATE.(.*?)\}#s'"file2template"$tpl) ; 
                      Design & Coding with a breeze of madness at xjonx

                      Comment

                      Working...
                      X