strtolower geht leider nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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 
    Zuletzt geändert von xJonx; 03.04.2008, 10: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.

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #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
          Zuletzt geändert von Shurakai; 03.04.2008, 09: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.

          Kommentar


          • #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

            Kommentar


            • #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

              Kommentar


              • #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

                Kommentar


                • #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

                  Kommentar


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

                    Kommentar


                    • #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

                      Kommentar

                      Lädt...
                      X