kostenloser Webspace werbefrei: lima-city


Ungewollter Zeilenumbruch

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    Ich lassen einen text aus einem Textfeld splitten und es in ein anderes ausgeben. Leider wird nach jedem einfügen des Textes ein ein Zeillenumbruch gemacht.

    Wie kann ich das verhindern, oder ist das nicht Möglich?

    Code
    <?php 
    $array = explode ( '\\n', $ul ); for ( $x = 1; $x < count ( $array ); $x++ )
    {  echo "Hallo ".$array[$x].", wie geht es dir? <br>"; } 
    ?>


    Raus kommt
    Hallo David
    , wie geht es dir?
    Hallo Kevin
    , wie geht es dir?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. boyman schrieb:
    <?php 
    $array = explode ( '\\n', $ul ); for ( $x = 1; $x < count ( $array ); $x++ )
    {  echo "Hallo ".$array[$x].", wie geht es dir? <br>"; } 
    ?>


    \n sorgt für einen Zeilenumbruch und <br> auch. Wenn du den Zeilenumbruch nach dem Namen weg haben willst, dann lass \n weg, wenn du den Zeilenumbruch nach dem Satz weg haben willst, dann lass <br> weg. (Ich habe es aber nicht ausprobiert.)
  4. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    Das \n ist wonach er im text sucht.
  5. Wäre es denn möglich das du /n anderster nennst z:B. /x oder wie auch immer du willst. Weil PHP versteht das /n wie ein <br />.
  6. so geht es:
    $array = explode("\n", trim($ul));
    for($x = 0; $x < count($array); $x++) {
      echo "Hallo ".$array[$x].", wie geht es dir? <br>";
    }
    die beispieldaten sind dabei so
    $ul = "\nDavid\nKevin\n";
    . wobei mit "\n" ist nicht zu spaßen. es kann auch anders heißen. für eine richtige behandlung - falls alles richtig gemacht wurde (ich kann es allerdings nicht wissen) - ist mit PHP_EOL.
  7. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    Funktioniert leider auch nicht. Beim ersten Namen macht er trotzdem einen Zeilenumbruch.
  8. boyman schrieb:
    Funktioniert leider auch nicht. Beim ersten Namen macht er trotzdem einen Zeilenumbruch.
    wie kommst du auf die daten? was steht in dem string? wir sind leider keine hellseher da :(
    wenn du doppelte/mehrfache '\n'-s drin hast, ist das natürlich auch ein problem und gehört behandelt! also. wocher kommen die daten und wie sehen sie aus?
  9. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    Ich gebe die daten über ein formular ein und speiche es dann in eine Variable.
  10. boyman schrieb:
    Ich gebe die daten über ein formular ein und speiche es dann in eine Variable.
    woran man ja wieder erkennen kann, wie nett formulare funktionieren :)
    in ein form kann jede(r) eingeben, was er/sie will. allein du kannst es wissen, wie du die daten haben willst und was du zu tun hast, um die von dir 'erschaffene ordnung' zu wahren/erzwingen/...(????)
    wenn du irgendwo - trotz erwartung ! - umbrüche hast (welcher art auch immer), musst du dafür sorgen, dass sie wieder verschwinden. dafür gibt es (auch) bei php standardvorgänge.

    eventuell könnte auch noch helfen, wen du deine form hier mal zeigen könntest.
    (ich mag keine blindflüge ;)

    Beitrag zuletzt geändert: 8.10.2013 0:46:48 von czibere
  11. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    Hier ist der Code vom Formular
    <form id="form1" name="form1" action="auswerten.php" method="post">
    <textarea name="text" rows="4" style="width: 300px;" wrap="virtual"></textarea><br />
    <input name="submit" type="submit" value="Auswerten">
    </form>
  12. Jupp, Blindflüge sind immer uncool. :biggrin:
    Bei Hilfe bitte auch immer etwas mehr Code liefern, da es ja offensichtlich ist, dass der Fehler aus dem Formular kommt.

    Ich hoffe mal nicht im Code etwas zu finden, dass mutwillig new lines erzeugt.
    Von daher, sollte deine Eingabe im Formular ja auch Zeilenumbrüche enthalten, so wie in der Ausgabe hier.

    Aber da du ja scheinbar keine Zeilenumbrüche möchtest, dein Formular aber welche liefert, kannst du mit folgender Funktion diese ungewollten "\n" wieder entfernen oder ersetzen:
    $ul = "\\nDavid\\nKevin\\n";
    echo str_replace('\\n','<br />',$ul);

    Anstatt dem "<br />" kannst du einen leeren Bereich mit "" übergeben bzw. ersetzen.

    Edit:
    Und genau da ist schon der Fehler:
    wrap="virtual"

    Du solltest eigentlich schon wissen wofür die einzelnen Attribute einsetzt.
    Schau dir das mal dazu an, was dein Attribut verursacht:
    http://de.selfhtml.org/html/formulare/eingabe.htm#bereiche_umbruch

    Entferne das Attribut und du brauchst keine zusätzliche Bereinigung durchführen.

    Edit 2:
    Mir lässt das ja keine Ruhe.
    Woher hast du dein Formular?
    Oder anders gefragt von welcher Quelle lernst du HTML?
    Dieses 'wrap="virtual"' ist beinahe so alt wie das Internet selbst und ist schon seit Ewigkeiten nicht mehr konform und auch kein Standard und war es zum Glück auch nie. Eine Textarea bricht von alleine den Text bzw. die Zeilen um, dass muss nicht noch künstlich angedroht werden.

    Beitrag zuletzt geändert: 8.10.2013 1:06:49 von kgreen
  13. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    kgreen schrieb:
    Edit 2:
    Mir lässt das ja keine Ruhe.
    Woher hast du dein Formular?
    Oder anders gefragt von welcher Quelle lernst du HTML?
    Dieses 'wrap="virtual"' ist beinahe so alt wie das Internet selbst und ist schon seit Ewigkeiten nicht mehr konform und auch kein Standard und war es zum Glück auch nie. Eine Textarea bricht von alleine den Text bzw. die Zeilen um, dass muss nicht noch künstlich angedroht werden.


    Das Formular habe ich irgendwann mal von Selfhtml kopiert.

    Ich lasse das ergebniss wieder in einer textare ausgeben. Dort wird nach der Variable ein Zeilenumbruch gemacht.

    Beispiel für eingabe:
    david
    heinz
    peter
    paul


    Ausgabe:
    Hallo david
    , wie geht es dir?
    Hallo heinz
    , wie geht es dir?
    Hallo peter
    , wie geht es dir?
    Hallo paul, wie geht es dir?



    Hier ist der gesamte code der Ausgabedatei:
    <?php
    $text= $_POST["text"];
    
     ?>
    
    <script type="text/javascript">
    <!--
    window.onload = function() {
                        textareas = document.getElementsByTagName("textarea");
                        for(i=0; textareas[i]; i++)
                            textareas[i].onclick =     function() {this.select();};
                    }
    -->
    </script> 
    <textarea readonly onclick="this.select();" name="select1" rows="4" style="width: 300px;">
    <?php
    
    $array = explode("\n", trim($text));
    for($x = 0; $x < count($array); $x++) {
      echo "Hallo ".$array[$x].", wie geht es dir? \n";
    }
    
    ?>
    </textarea>
  14. versuchs mal mit trim() .. oder chop() ... oder beides ... für jedes Element im Array

    ... und Vorschlag: nimm foreach() anstatt for() mit count() ....

    $array = explode("\n", trim($text)); 
    
    foreach($array as $item) { 
      $item = chop($item); 
      $item = trim($item); 
      echo "<br> Hallo ".$item.", wie geht es dir? \n";
    }


    ok, chop() und trim() ist vielleicht doppelt-gemoppelt .. trim() müsste auch ausreichen.

    oder ... entfernen der Steuerzeichen (Zeilenumbruch und Zeilenvorschub und Tabulator, etc.)

    ... 
      $item = str_replace( array("\r","\n","\t","\s"), '', $item); 
    ...


    nochmal ... \n ist Zeilenumbruch im reinen Text, und <br> ist Zeilenumbruch als HTML,
    oft wird als Zeilenumbruch auch \r\n gesetzt (unter Windows) also inkl. Zeilenvorschub


    Beitrag zuletzt geändert: 8.10.2013 11:23:58 von bginfo
  15. m******e

    Auch ich würde str_replace nutzen.

    Verändertes PHP:
    $array = explode("\n", trim($text));
    $order = array("\r\n", "\n", "\r");
    for($x = 0; $x < count($array); $x++) {
    $array[$x] = str_replace($order, '', $array[$x]);
    echo "Hallo ".$array[$x].", wie geht es dir? \n";
    }

    Alles in einem zusammengefasst:
    <html><head><title>explode &amp; str_replace</title>
    <script type="text/javascript">
    <!--
    window.onload = function() {
                        textareas = document.getElementsByTagName("textarea");
                        for(i=0; textareas[i]; i++)
                            textareas[i].onclick =     function() {this.select();};
                    }
    -->
    
    </script>
    </head>
    
    <body>
    
    <?php
    $text= $_POST["text"];
    ?>
    Ausgabe: <br />
    <textarea readonly onclick="this.select();" name="select1" rows="4" style="width: 300px;">
    <?php
    
    $array = explode("\n", trim($text));
    $order = array("\r\n", "\n", "\r");
    for($x = 0; $x < count($array); $x++) {
    $array[$x] = str_replace($order, '', $array[$x]);
    echo "Hallo ".$array[$x].", wie geht es dir? \n";
    }
    
    ?>
    </textarea>
    <br /><br />
    Eingabe: <br />
    <form id="form1" name="form1" action="index.php" method="post">
    <textarea name="text" rows="4" style="width: 300px;" wrap="virtual">
    david
    heinz
    peter
    paul</textarea><br />
    <input name="submit" type="submit" value="Auswerten">
    </form>
    
    </body>
    </html>

    Ausgabe:
    Hallo david, wie geht es dir?
    Hallo heinz, wie geht es dir?
    Hallo peter, wie geht es dir?
    Hallo paul, wie geht es dir?

    > Beispiel <

    Beitrag zuletzt geändert: 8.10.2013 19:13:20 von menschle
  16. Autor dieses Themas

    boyman

    Kostenloser Webspace von boyman

    boyman hat kostenlosen Webspace.

    Danke euch allen für die Hilfe. Funktioniert alles prima.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!