[PHP] Parsing-Fehler

  • [PHP] Parsing-Fehler

    Guckt euch mal die Seite an, die ich mit php parse:

    ohg-bensberg.info/extdata/121004/Ver_Kla_EF.htm

    Alle Strings in der Spalte "Art", die Unterricht geändert anstatt Selbstlernen etc. haben, sind null. Und das bringt meine App zum Absturz. Nun, ich muss jetzt suchen, aber ich habe den Verdacht, dass es bei den 2 Feldern null ist, wo ein Umlaut drin ist. Falls ihr da schon paar Grundsätzliche Tipps habt, dann könnt ihr sie ja mal da lassen. Ich werde nachher auf jeden Fall mit Code genauer drauf eingehen, wo es null wird.

    Gruß Robin
    Gruß

    Robin
  • So hier der versprochene Code:

    Quellcode

    1. $strippedCode = strip_tags($subHTMLstring);
    2. // echo ($strippedCode);
    3. $exploded = explode("\n\n", $strippedCode);
    4. echo json_encode ($exploded);


    den Auskommentieren Log ist noch alles richtig, mit Umlauten etc...
    wenn ich aber das Array $exploded ausgebe, dann gibts überall wo das mit dem Umlaut war, ein "null".
    Also, liegt es nun an json_encode, oder an der function expload();

    Finde auch keinen Ersatz für Expload();...
    Gruß

    Robin
  • Also,

    ich habe nun probiert :

    Quellcode

    1. $strippedCode = strip_tags($subHTMLstring);
    2. $strippedCode = str_replace("ä", "&auml", $strippedCode);
    3. $strippedCode = str_replace("ö", "&ouml", $strippedCode);
    4. $strippedCode = str_replace("ü", "&uuml", $strippedCode);
    5. $strippedCode = str_replace("Ä", "&Auml", $strippedCode);
    6. $strippedCode = str_replace("Ö", "&Ouml", $strippedCode);
    7. $strippedCode = str_replace("Ü", "&Uuml", $strippedCode);
    8. $exploded = explode("\n\n", $strippedCode);
    9. echo json_encode($exploded);
    Alles anzeigen


    Aber auch in der Konvertierung der Umlaute, nach exploded ist es null
    Gruß

    Robin
  • Ich verstehe es einfach nicht, habe versucht, das ä durch X zu ersetzten. Also hab ich $meineZeichenkette = str_replace("ä", "X", $meineZeichenkette); geschrieben aber das hat sich nicht verändert, das ä bleibt einfach und dann macht es b0oM beim explod()...

    Ich habe auch ä Und X in der Param-Liste umgetauscht, falls ein Fehler da gewesen sein sollte... brachte nix
    Gruß

    Robin
  • Danke für den Hinweis...

    Also hier mal der vereinfachte Code:

    Quellcode

    1. $test = str_replace(" ", "", $strippedCode); //Dein Tipp mit den leerzeiche
    2. echo ($test);
    3. echo "<br>";
    4. $exploded = explode("\n\n", $test);
    5. echo (print_r($exploded));
    6. echo "<br>";
    7. [...] array filtern
    8. echo json_encode($exploded);


    Also, ich habe gerade mal geguckt und das mit dem Leerzeichen replacen weg gemacht und nach dem explod() geprintet. Und siehe da, es ist nicht null. Also es steht "Unterricht geändert", so wie es muss. Dass heißt, mein exploded ist NICHT der Übeltäter...

    muss es dan das json_encode sein?

    Ich gehe jetzt die Schritte des array filtern durch und gucke, ob es da schon null ist oder eben richtig...

    Danke für die Antwort
    Gruß

    Robin
  • OK, habs getestet, liegt an dem json_encode().

    Ich habe ein echo(print_r($array)); vor dem letzten Schritt (der mit dem Json_encode) geschrieben.
    Und da ist es noch richtig. Wenn ich dann das in JSON kodierte ausgebe, dann ist es da null...

    Und da liegt es dann wiederrum evt. an den Umlauten?
    Gruß

    Robin
  • robin_ schrieb:

    Ich habe ein echo(print_r($array)); vor dem letzten Schritt (der mit dem Json_encode) geschrieben.
    Und da ist es noch richtig.
    Sobald man über Encodings spricht, gibt es kein »richtig« oder »falsch«, solange die Rahmenbedigungen fehlen. D.h. es stehen wieder mal die üblichen Fragen im Raum: unter welchen Bedigungen sah es für Dich »richtig« aus? Im Browser? Wenn ja: welche HTTP-Charset-Header und ggf. welches HTML-Content-Type-Meta-Tag ist vorhanden? Ohne diese Informationen ist das im Prinzip nur Rätselraten – zumal o.g. URL einen 404 ergibt.

    Nichtsdestotrotz die zu vermutende Ursache: Du versuchst, Latin1-Daten in json_encode() zu stopfen (wie Dir das PHP-Manual erklärt, erwartet json_encode() UTF-8 als Input). Dann kommt es genau zu dem von Dir beschriebenen Verhalten.

    Carsten
  • zerm schrieb:

    Keine Ahnung. Frag die Leute, die immer erzaehlen, wie toll und professionell PHP doch is...
    Es ist nicht toll oder professionell, sondern einfach ein Werkzeug. Wenn man das Werkzeug falsch benutzt, macht es i.d.R. nicht das, was man erwartet.

    Carsten
  • Danke Blue für die Antwort!
    Also erstmal zur Website, das die 404 ist, ist leider klar... ich meinte es sind bei uns jetzt Ferien und es gibt keine Vertretung mehr, sprich, ich kann das erst testen, wenn es wieder Vertretung gibt...
    HTTP-Charset HTML-Content-Type habe ich nun auf




    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    header('Content-type: text/html; charset=utf-8');


    Geändert
    Gruß

    Robin