Ankündigung

Einklappen
Keine Ankündigung bisher.

Template-Variablen

Einklappen

Neue Werbung 2019

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

  • Template-Variablen

    Hi!
    Ich hab mir eine kleine Funktion geschrieben, die Template-Variablen ersetzen sollen... jedoch klappt das nicht ganz so, wie ich will
    PHP-Code:
    <?
          function replace_variables($content, $page=array()) {
            $i_start = strpos($content, "[");
            while($i_start) {
              unset($var_name, $new_var);
              $i_end = strpos($content, "]", $i_start++);
              if(!$i_end) break;
              
                     //hier scheitert das script
              if(strpos($content, "[", $i_start++) < $i_end) {
                $i_start = strpos($content, "[", $i_start++);
                continue;
              }
                     /* wenn man diese if-abfrage weglaesst, dann klappt alles, solang keine offene variable vorhanden ist...
                         wuerde [ [title] beispielsweise dortstehn, so klappt es schon nichtmehr */
              $var_name = substr($content, $i_start++, $i_end+1-$i_start);
              
              //echo htmlspecialchars(substr($content, $i_start-5, $i_end+1-$i_start+5));
              
              if($var_name == 'content') {
                $i_end = $i_end++;
              }elseif($var_name == 'title') { //title
                $new_var = $page['title'].' - '.$page['projectname'];
              }elseif($var_name == 'page_name') {
                $new_var = $page['title'];
              }elseif($var_name == 'page_key') {
                $new_var = $page['page_key'];
              }elseif(substr($var_name, 0, strlen('link')) == 'link') { //link
                $page = substr($var_name, strlen('link '));
                !$page && $page = 'startpage';
                $new_var = '?page='.urlencode($page);
              }else {
                if($this->template_variables[$var_name]) {
                  $new_var = $this->template_variables[$var_name];
                }else {
                  //
                }
              }
              if($new_var) {
                $content = substr($content, 0, $i_start-2).$new_var.substr($content, $i_end+1);
                $i_end = $i_end-strlen($var_name)+strlen($new_var);
              }
              $i_start = strpos($content, "[", $i_end);
            }
            
            return $content;
          }
    ?>

  • #2
    Ja und? Was klappt nicht? Wie willst du es haben?

    Kommentar


    • #3
      Hi!
      Ich hab mal ein bissl was veraendert... aber nur an der while-schleife...

      wie ichs haben will?
      naja... es klappt eh ganz gut, nur wenn ich nun das ganze so haben moechte das wenn dasteht
      Code:
      [ [title]
      dann wird normalerweise der inhalt
      Code:
       [title
      gelesen
      ich will aber, dass das script dann zum naechsten [ geht und dann
      Code:
      title
      liest.

      Kommentar


      • #4
        Soda! Habs nun auf eigene faust geloest und auch noch etwas unprofessionel, aber egal:
        PHP-Code:
        <?
                      function replace_variables($content, $page=array()) {
                $i_end = -1;
                while (($i_start = strpos($content, '[', $i_end+1)) !== false) {
                  $i_end = strpos($content, "]", $i_start++);
                  if(!$i_end) break;
                  
                  $var_name = substr($content, $i_start++, $i_end+1-$i_start);
                  //is that a value variable or are there some [
                  if(strpos($var_name, '[')) {
                    $i_var_start = -1;
                    $new_var = '';
                    $i_var = strpos($var_name, '[');
                    while (($i_var = strpos($var_name, '[', $i_var+1)) !== false) {
                      if(!$i_var) break;
                      $i++;
                      $i_temp_var = $i_var;
                    }
                    $new_var = '['.substr($var_name, 0, $i_temp_var);
                    $var_name = substr($var_name, $i_temp_var+1);
                  }
                  
                  if($var_name == 'content') {
                    $i_end = $i_end++;
                  }elseif($var_name == 'title') { //title
                    $new_var.= $page['title'].' - '.$page['projectname'];
                  }elseif($var_name == 'page_name') {
                    $new_var.= $page['title'];
                  }elseif($var_name == 'page_key') {
                    $new_var.= $page['page_key'];
                  }elseif(substr($var_name, 0, strlen('link')) == 'link') { //link
                    $page = substr($var_name, strlen('link '));
                    !$page && $page = 'startpage';
                    $new_var.= '?page='.urlencode($page);
                  }else {
                    if($this->template_variables[$var_name]) {
                      $new_var.= $this->template_variables[$var_name];
                    }else {
                      //
                    }
                  }
                  if($new_var) {
                    $content = substr($content, 0, $i_start-2).$new_var.substr($content, $i_end+1);
                    $i_end = $i_end-strlen($var_name)+strlen($new_var);
                  }
                  $var_name = $new_var = $var_name = $i_temp_var = $i = '';
                }
                
                return $content;
              }
        ?>

        Kommentar


        • #5
          wofür gibt es eigentlich regex?

          Schau mal: http://www.cix88.de/projekte/regexp/20060228000119.html

          Kommentar

          Lädt...
          X