Impressum Disclaimer AGB
analoguhr
WWW CMS 800 Guide

deinMagazin
HPhilo's UpDate Target WiV TVglotzer Tagebuch Meinung Forensenf WebWatch KnowHow »» Artikel Archiv »» Artikel schreiben »» Artikel Leserbriefe Gästebuch
Westerwelle muß weg
www Links
TV-Programm Litfaßsäule lustige Bilder Wallpaper Webmaster Tutorials Treiber Suchen WieIstMeineIp? Browserspiel spielen
Foxkeh



Google

Wissen ist Macht

nix wissen macht auch nix

Folgefehler

800XE 21.8.2009 16:33

Immer wieder kommt es beim Programmieren zu sogenannten „Folgefehlern”

In Zeile 123 soll angeblich ein Fehler sein, doch dort ist keiner




Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/web….php on line 70

Parse error: syntax error, unexpected T_STRING in /var/www/web….php on line 70



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);
$TEAS=str_replace("\n",'NEWLINE',$TEAS);
$TEXT=str_replace("\n",'NEWLINE',$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'];
$TEAS='';
if ( $POS=strpos($TEXT,"\n»\nTEASER\n«\n) )
{
$TEAS = substr($TEXT,0,$POS);
$TEXT = substr($TEXT,$POS+12);
} //$TEXT = trim($TEXT);
$TEAS=str_replace("\n",'NEWLINE',$TEAS);
$TEXT=str_replace("\n",'NEWLINE',$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) )
{
$TEAS = substr($TEXT,0,$POS);
$TEXT = substr($TEXT,$POS+12);
} //$TEXT = trim($TEXT);
$TEAS=str_replace("

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  );
2: echo ( "Hallo ich bins" )
3: 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>' );
// das ist falsch

echo ( "<a href='http://$linkziel'>Link</a>" );
// so würde es gehen

Bei Strings mit einfachen Anführungszeichen werden $Variablen nicht geParst und gegen ihren Inhalt ausgetauscht










Textversion zum ausdrucken


Punkte für diesen Artikel :::: 0 Bewertungen

Beitrag kommentieren:


dein Name:


Gast ····
···· Bookmark @
1:15 Mi 8.9. 800XE
Ich krieg voll die Krise
13:00 Fr 27.8. 800XE
Der Hase ist tot
7:18 Do 19.8. TVglotzer
LALALA .... NEXT TokioHotel
12:54 Mo 5.7. AndyZmuda
Twitter reTweet?
18:39 Sa 3.7. CSVAndy
SuperClix jetzt mit Uhrzeit
3:36 Mi 16.6. 800XE
Agent Google 007
1:35 Mi 16.6. 800XE
Speyer nach der Wahl
20:00 Sa 5.6. CSVAndy
Änderungen nach der Änderung
0:24 Sa 5.6. StörBäcker
Angela "Schläferin" Merkel
13:21 Do 3.6. 800XE
Bacardi Rum



little Big World crista Speyer Warum mit oder ohne WWW /Ally/All you need Cronjob.de best viewed with mozilla logo