Hauke: Escape Sequences verändern

Hallo Leute,

ich habe eine Textarea in der etwas aus Excel rein kopiert wird. Ab Ende kann es sein, dass der Benutzer ein paar mal "ausversehen" Enter drückt, so dass der String so aussieht:

blabablablablab...blabla\n\n\n

Nun möchte ich gucken, ob in meinem String ein \n\n vorkommt. Leider kann ich mit allen Fktn die ich gefunden habe strpos substr etc. nichts machen. Meine Idee war eine While-Schleife über den String laufen zu lassen, solange er ein \n\n findet und dann \n\n durch \n ersetzt.

Nun habe ich mal mit
print addcslashes($data, "\n");

gesehen, dass der String
blablabla...blablabla\n \n \n
ist. Also habe ich nach "\n \n" gesucht, aber auch da findet er nichts. Nach einem einfachen "\n" kann er suchen und findet es auch. Ich vermute, dass das Leerzeichen zwischen den \n's kein Leerzeichen ist, sondern etwas anderes.

Hat jemand eine Idee was ich da machen könnte?

PS.: Falls es hilft, ich habe mal strlen($data); probiert auszugeben, und bei jedem Zeilenumbruch, wird der String um 2 Zeichen länger.

Hoffe ich konnte das einigermaßen verständlich erklären.

Viele Grüße,
Hauke

  1. ich habe eine Textarea in der etwas aus Excel rein kopiert wird. Ab Ende kann es sein, dass der Benutzer ein paar mal "ausversehen" Enter drückt, so dass der String so aussieht:

    blabablablablab...blabla\n\n\n

    Wenn nur das Ende das Problem ist, was ist gegen rtrim() einzuwenden?

    gesehen, dass der String
    blablabla...blablabla\n \n \n
    ist. Also habe ich nach "\n \n" gesucht, aber auch da findet er nichts. Nach einem einfachen "\n" kann er suchen und findet es auch. Ich vermute, dass das Leerzeichen zwischen den \n's kein Leerzeichen ist, sondern etwas anderes.

    Vielleicht der Wagenrücklauf (carriage return, \r), obwohl der eigentlich neben \n als \r hätte auftauchen müssen und üblicherweise vor dem \n erscheint (\r\n), nicht wie bei Dir dahinter.
    Um sicherzugehen, greife Dir die Position eines solchen verkappten Leerzeichens und gibt seinen Bytewert mittels ord() aus. Welchen Wert welches Zeichen hat, kannst Du aus der ASCII-Tabelle und ihrer iso-8859-1-Erweiterung ersehen.

    Merkwürdige Kombinationen kannst Du mit preg_replace() austauschen, für bekannte Kombinationen würde ich aber lieber zu strtr() mit Feldparameter greifen.

    1. Hallo,

      danke für deine Hilfe. \r war das Problem :-)

      Vielen dank und ein schönes Wochenende noch
      Hauke