| Impressum Disclaimer AGB | ||||||||||||||
|
||||||||||||||
|
||||||||||||||
Folgefehler800XE 21.8.2009 16:33Immer wieder kommt es beim Programmieren zu sogenannten „Folgefehlern” In Zeile 123 soll angeblich ein Fehler sein, doch dort ist keiner
Und Zeile 70 ist $TEAS=str_replace("\n",'NEWLINE',$TEAS);Da ist kein Fehler und in Zeile 71 auch nicht, was unnötig ist dort nachzuschauen, auser der PHParser hat eine Andere Zeilenzählung als der Editor (=einer beginnt bei 0 der Andere bei 1) und Zeile 69? } //$TEXT = trim($TEXT); Da ist auch alles OK Warum ich in Zeile 69 schaue? Na, weil wir hier über „Folgefehler” sprechen! Es gibt einen Fehler, der aber keine Auswirkungen hat; Der Parser bekommt erst etwas später ein Problem, und dort wird dann der Fehler gemeldet; Dort ist aber kein Fehler. In Zeile 69 war jetzt auch nichts, gehen wir noch etwas weiter zurück $TEXT=' '.$linePost['text']; Wo ist der verdammt Fehler? if ( $POS=strpos($TEXT,"\n»\nTEASER\n«\n) ) Dort ist der Fehler es fehlt das " um den String zu schliesen Für den Parser steht dort folgender String im Quelltext "\n»\nTEASER\n«\n) ) Der Parser liest bis der String beendet wird, was dort geschiet wo ein neuer String beginnt; Und da der String jetzt beendet ist und kein neuer beginnt, versucht der Parser Programmtext zu verarbeiten wo kein Programmtext ist und das führt zu einer Fehlermeldung wo kein Fehler ist. Heufige Ursachen für Folgefehler 1: echo ( "Hallo ich bins ); 1: wie bei mir eben passiert, einen STring nicht beendet 2: ein Semikolon vergessen; ein sehr beliebter Folgefehler 3: Stringbegrenzer innerhalb eines Strings; quasie das gegenteil zu Nummer 1, der String wird hier früher beendet als beabsichtigt. Tritt gerne auf wennman Verschachtelt arbeitet; z.B. HTMLcode kopiert und in einen PHPecho einbaut; in so einem Fall müßen die " escapet werden 3: echo ( "Hallo \"ich\" bins" ); echo ( "<a href=\"http://dorthin.tld\">Link</a>" ); oder besser, die äusseren als einfache Anführungszeichen echo ( '<a href="http://dorthin.tld">Link</a>' ); dann würden aber keine $Variablen mehr im String stehen echo ( '<a href="http://$linkziel">Link</a>' ); echo ( "<a href='http://$linkziel'>Link</a>" ); Bei Strings mit einfachen Anführungszeichen werden $Variablen nicht geParst und gegen ihren Inhalt ausgetauscht Beitrag kommentieren: |
Gast ···· ···· Bookmark @
|
|||||||
|
crista
Speyer
Warum
mit oder ohne
WWW