Warum T_CONSTANT_ENCAPSED_STRING-Error in Script?

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

  • JeyDie
    antwortet
    so, hab die ersten Zeilen oben entfernt und die Zeilen umgebrochen
    (besonders die Kommentare und die SQL-Querries)

    Ich schau jetz nochma ganz genau auf die Hochkommas und ohrfeige mich dann am Ende am besten selber, wenn ich den Fehler dann endlich hab

    edit: *ohrfeig*
    hab jetz die eckige Klammer und das Hochkomma am Ende entfernt...
    Warum ich das nicht gefunden habe, ist mir aber ein Rätsel!

    Mein Editor ist scheinbar nicht so gut, wie ich dachte.
    Er hat den darauffolgenden Code nicht als String dargestellt, warum auch immer...

    Danke nochmal!
    Komme vielleicht öfter vorbei, klasse Forum!
    Zuletzt geändert von JeyDie; 01.08.2007, 19:46.

    Einen Kommentar schreiben:


  • Kropff
    antwortet
    1. code umbrechen
    2.schau dir mal das genau an:
    PHP-Code:
    $box_content preg_replace_callback('!['.$result['name'].']!', array('this''run_module'), $box_content']); 
    gruß
    peter

    Einen Kommentar schreiben:


  • JeyDie
    antwortet
    hab syntax-highlighting im Editor...
    Und ich sehe da keinen Fehler?
    Wie gesagt, escapte-backslashes werden vom Forum entfernt, die sind drann, wenn du das meinst...

    Sowas ist mir noch nie passiert, dass ich irgendwelche Hochkommafehler nicht sehe...
    Zuletzt geändert von JeyDie; 01.08.2007, 19:34.

    Einen Kommentar schreiben:


  • ghostgambler
    antwortet
    Hol dir nen Editor mit Syntax-Highlighting...
    PHP-Code:
    $box_content preg_replace_callback('!['.$result['name'].']!', array('this''run_module'), $box_content']); 
    ist mehr als falsch.

    Man kann übrigens auch Dateien anhängen, und muss nicht Code posten, den mal selbst mit 1280 Pixeln Breite nicht auf einem Bildschirm ohne horizontalem Scrollbalken haben kann...

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Die ersten Zeilen sind irrelevant. Bitte entfernen oder umbrechen gemäß unseren Regeln. Danke.

    Zum Problem: Schau dir mal die Farbgebung deines Codes da oben an!

    Einen Kommentar schreiben:


  • JeyDie
    antwortet
    Ok, da ich nicht weiß, wie viel mehr Code erforderlich ist, hier einfach ma die ganze class.kernel.php...

    Könnte sein, dass ich einiges zu umständlich gelöst habe.
    Ich weiß auch noch nicht, ob das Script genau das macht, was ich will. Denn ich bin beim ersten Testlauf bei genau dem Fehler hängen geblieben...

    Einige Stellen sind noch aus dem alten CMS übernommen, von daher sollten etwa 50% des Codes funktionieren, da auch das alte CMS lief.
    Ich weiß halt nur nicht, wo in den anderen 50% der Fehler liegt...

    PHP-Code:
    <?php

    class kernel
    {

    var 
    $objects = array();
    var 
    $page = array();
    var 
    $template = array();
    var 
    $last_module 0;

        function &
    get_instance()
        {
            static 
    $instance;
            if(!isset(
    $instance))
                
    $instance = new kernel;
            return 
    $instance;
        }



        function 
    page()
        {
        
            
    $mysql = &mysql::get_instance();

        
    // If a page is called, the page id is in $_GET['id']
    // or the name of the page is in $_GET['name'].
    // If no page is called, the ID of the start page
    // will be written in $this->page['id']
        
            
    if(!isset($_GET['id']))
            {
                if(isset(
    $_GET['name']))
                {
                    if(
    $mysql->query('SELECT id FROM pages 
                                WHERE name = "'
    .mysql_real_escape_string($_GET['name']).'"') == false)
                        die(
    display_system_error(2));
            
                    
    $result    $mysql->get_array();
                    
    $this->page['id'] = $result['id'];
                
                    
    $this->page['name'] = $_GET['name'];

                }
                
                else
                {
                    if(
    $mysql->query('SELECT start_page
                                FROM options'
    ) == false)
                        die(
    display_system_error(2));
            
                    
    $result    $mysql->get_array();
                    
    $this->page['id'] = $result['start_page'];
                }
            }

            else 
    $this->page['id'] = $_GET['id'];
            
            
    // If the Name is not allready in $this->page['name'] yet,
    // it will be written in.

            
    if(!isset($this->page['name']))
            {    
                if(
    $mysql->query('SELECT name FROM pages
                                WHERE id = "'
    .mysql_real_escape_string($this->page['id']).'"' == false)
                    die(
    display_system_error(2));

                
    $result    $mysql->get_array();
                
    $this->page['name'] = $result['name'];
            }
        }


        function 
    template()
        {
        
            
    $mysql = &mysql::get_instance();


            
    // Select template of the page. If $template['id'] is 0
            // (= the called page need the standard template), 
            // $template['id'] will be overwritten with the id of the 
            // standard template
            
    if($mysql->query('SELECT template_id FROM pages 
            WHERE id = "'
    .mysql_real_escape_string($this->page['id']).'"') == false)
                die(
    display_system_error(2));

            
    $result $mysql->get_array();
            
    $this->template['id'] = $result['template_id'];
            
            
            if(
    $this->template['id'] == 0)
            {
                if(
    $mysql->query('SELECT standard_template
                            FROM options'
    ) == false)
                    die(
    display_system_error(2));
            
                
    $result $mysql->get_array();
                
    $this->template['id'] = $result['standard_template'];
            }

            
    // Get the Name of the template
            
    if($mysql->query('SELECT name FROM templates
                        WHERE id = "'
    .mysql_real_escape_string($this->template['id']).'"') == false)
                die(
    display_system_error(2));
                
            
    $result $mysql->get_array();
            
    $thia->template['name'] = $result['name'];

            
    // Load the selected template in $template['content']
            
    if($mysql->query('SELECT content FROM templates
                            WHERE id = "'
    .$this->template['id'].'"') == false)
                die(
    display_system_error(2));

            
    $result $mysql->get_array();
            
    $this->template['content'] = $result['content'];
        
        }
        
        function 
    load_module($name)
        {        
            if(
    is_file('module_'.$name.'php'))
            {
                require_once 
    'module_'.$name.'php';
                if(
    class_exists($name))
                {
                    if(isset(
    $this->objects[$name]) == false$this->objects[$name] = new $name;
                    if(
    method_exists($this->objects[$name]->page())) return true;

                    unset(
    $this->objects[$name]);
                    return 
    false;
                }
            }
        }

        
        function 
    box_content($name)
        {
        
            
    $mysql = &mysql::get_instance();

        
            if(
    $mysql->query('SELECT content FROM boxes
                            WHERE name = "'
    .mysql_real_escape_string($name).'"
                            AND WHERE page_id = "'
    .mysql_real_escape_string($this->page['id']).'"') == false)
                die(
    display_system_error(2));

            
    $result $mysql->get_array();
            
    $box_content $result['content'];
            
            if(
    $mysql->query('SELECT name FROM modules') == false)
                die(
    display_system_error(2));
            
            while(
    $result $mysql->get_array())
            {
                if(
    strpos($box_content'['.$result['name'].']') !== false)
                {
                    if(
    $this->load_module($result['name']))
                    {
                        
    $box_content preg_replace_callback('!\['.$result['name'].'\]!', array('this''run_module'), $box_content']);
                    }
                }
            }
        return $box_content;    
            
        }



        function run_module()
        {
            $last_module = $this->last_module;
            return $this->objects[$last_module]->page();
        }
        
        function render_page()
        {
            echo preg_replace_callback('
    !\{(.+?)\}!', array('this', 'box_content'), $this->template['content']);
        }
        
    }
    ?>

    Fehler einkreisen ist gut.
    Nur kann man bei einer Funktion mit drei Parametern schlecht welche weglassen...
    Zuletzt geändert von JeyDie; 01.08.2007, 19:40.

    Einen Kommentar schreiben:


  • combie
    antwortet
    Du könntest in diesem oder in dem anderen Forum mal ein größeres Stückchen Code zeigen.

    Einen Kommentar schreiben:


  • ghostgambler
    antwortet
    Grenz das Problem ein - entferne Teile der Zeile, bis es funktioniert, der Teil den du entfernt hast, da liegt dann der Fehler ... so sollte sich ein Parse-Error doch recht schnell finden lassen.

    Einen Kommentar schreiben:


  • JeyDie
    antwortet
    Ich hab das gleiche Konstrukt aber schon an verschiedenen anderen Stellen im Script und es geht einwandfrei.

    Aber gut, ich schau ma, obs funzt.

    edit: Geht immernoch nicht, auch wenn ichs so mache...
    Jemand ne andere Idee?

    Danke schonma für die Hilfe!
    Zuletzt geändert von JeyDie; 01.08.2007, 18:52.

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Der 2. Parameter ... versuche es mit array('self', 'box_content').

    Einen Kommentar schreiben:


  • JeyDie
    hat ein Thema erstellt Warum T_CONSTANT_ENCAPSED_STRING-Error in Script?.

    Warum T_CONSTANT_ENCAPSED_STRING-Error in Script?

    Hi allerseits.

    Ich bekomme aus mir nicht erklärlichen Gründen folgenden Fehler
    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in D:\files\xampplite\htdocs\cmsm\lib\class.kernel.php on line 168
    in einem Script.

    Zeile 168 sieht wie folgt aus (in der Methode, in der sie steht - line 168 ist nur alles ab echo):

    PHP-Code:
    function render_page()
    {
        echo 
    preg_replace_callback('!\{(.+?)\}!',
            array(
    $this'box_content'),
            
    $this->template['content']);

    In meinem Script ist das ab echo alles übrigens in einer Zeile, als könnte der Fehler auch in den nachfolgenden Zeilen liegen. Ich habs nur umgebrochen, um seitliche Scrollbalken zu vermeiden.

    So weit ich das sehe, verwende ich dort nirgends eine Konstante?
    Auch sonnst hab ich im Script keine Konstanten, nur ganz oben wird eine in der index.php definierte Konstante abgefragt, um zu überprüfen, ob die Datei von der index.php oder von einem User aufgerufen wird...

    Ich bin wirklich kein Anfänger mehr in PHP, habe jetzt schon mehrere Jahre Erfahung mit dieser Sprache. Aber ich sehe bei diesem Error einfach nicht die Fehlerquelle.
    Keine falsch gesetzten Anführungszeichen und so weiter - oder bin ich einfach nur blind?

    Die Codezeilen sind übrigens für ein eigenes CMS. Hatte vor einger Zeit schonmal ein kleines CMS für eigene Projekte programmiert, das nun modular umgeschrieben werden soll.


    edit: sehe gerade: hab vor den geschweiften Klammern im Reguleren Ausdruck eigentlich noch einen Backslash, um sie zu escapen.
    Das Forum stellt die aber irgendwie nicht da, obwohl ich sie mit reingeschrieben hab.
    Zuletzt geändert von JeyDie; 01.08.2007, 18:26.
Lädt...
X