• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit wordwrap

Furien

Mitglied
Hi Community,
ich habe folgenden Code
PHP:
        $text = $_POST["text"];
        $vtext = str_replace("A", "", $text);
        $vtext = str_replace("E", "", $vtext);
        $vtext = str_replace("I", "", $vtext);
        $vtext = str_replace("O", "", $vtext);
        $vtext = str_replace("U", "", $vtext);
        $vtext = str_replace("a", "", $vtext);
        $vtext = str_replace("e", "", $vtext);
        $vtext = str_replace("i", "", $vtext);
        $vtext = str_replace("o", "", $vtext);
        $vtext = str_replace("u", "", $vtext);
    //    $vtext = htmlentities($vtext);
        $vitext = wordwrap( $vtext, 50, "<br />" );
        echo "<blockquote>".$vitext."</blockquote>";
Und der text wird nicht umgebrochen.
htmlentities habe ich jetzt extra auch schon auskommentiert. Könnt ihr mir helfen?

MfG Furien
 
Werbung:
Hab das Ganze mal getestet und es hat wunderbar funktioniert. Wieso du Umlaute rausfilterst weiß ich nicht :) Aber es klappt so weit. Muss also an dem restlichen Code liegen.

Habs mal ganz dirty getestet. Hier der Code den ich dafür benutzt habe :D
PHP:
    <?php
    
      $text = $_POST["text"];
        $vtext = str_replace("A", "", $text);
        $vtext = str_replace("E", "", $vtext);
        $vtext = str_replace("I", "", $vtext);
        $vtext = str_replace("O", "", $vtext);
        $vtext = str_replace("U", "", $vtext);
        $vtext = str_replace("a", "", $vtext);
        $vtext = str_replace("e", "", $vtext);
        $vtext = str_replace("i", "", $vtext);
        $vtext = str_replace("o", "", $vtext);
        $vtext = str_replace("u", "", $vtext);
    //    $vtext = htmlentities($vtext);
        $vitext = wordwrap( $vtext, 50, "<br />" );
        
        
        
        ?>
        <html>
          <head></head>
          <body>
            <?php echo "<blockquote>".$vitext."</blockquote><br/>"; ?>
            <form action="test.php" method="post">
              <textarea name="text"></textarea>
              <input type="submit" value="OK">
            </form>
          </body>
        </html>
 
Werbung:
Danke ihr beiden und OH htmlentities filtert Umlaute?? Bin ich doof! Ich wollte, dass <,>... in diese &lt; und so umgewandelt werden.
Wie geht das?

MfG Furien

EDIT

Und es funktioniert nicht hier der ganze Code:
PHP:
<?php
    if(isset($_POST["Submit"])) {
        echo "<p>Dein Text ohne Vokale:</p>";
        $text = $_POST["text"];
        $vtext = str_replace("A", "", $text);
        $vtext = str_replace("E", "", $vtext);
        $vtext = str_replace("I", "", $vtext);
        $vtext = str_replace("O", "", $vtext);
        $vtext = str_replace("U", "", $vtext);
        $vtext = str_replace("a", "", $vtext);
        $vtext = str_replace("e", "", $vtext);
        $vtext = str_replace("i", "", $vtext);
        $vtext = str_replace("o", "", $vtext);
        $vtext = str_replace("u", "", $vtext);
        //$vtext = htmlentities($vtext);
        $vtext = wordwrap($vtext,50,"<br />");
        echo "<blockquote>".$vtext."</blockquote>";
    }
    else {
?>
<form action="index.php?s=fun" method="post">
    <table border="0" style="width: 400px" cellspacing="1">
    <tr>
        <td>
            <textarea name="text" style="height: 80px">Hier deinen normalen Text hin bitte ;) M(i)t V(o)k(a)l(e)n</textarea>
        </td>
    </tr>

        <tr>
        <td align="right">&nbsp;  </td>
            <td>
                <input name="Submit" type="submit" value="Absenden" class="button" />&nbsp;&nbsp;&nbsp;
                <input name="Reset1" type="reset" value="Zurücksetzen" class="button" />
            </td>
        </tr>
    </table>
</form>
<?php
    }
?>
 
Zuletzt bearbeitet:
Und es funktioniert nicht
Was genau bedeutet das?

Nur mal so eine Idee, aber was steht in $_POST['text']?
Steht da dein vorgegebener Text:
Hier deinen normalen Text hin bitte ;) M(i)t V(o)k(a)l(e)n
?
Wenn ja, dann passiert da auch nichts. Denn ohne Umlaute (die du ja unsanft da rausfilterst), sind es weit weniger als 50 Zeichen. (Zur errinnerung, du schneidest erst ab 50 Zeichen.. wordwrap($vtext,50,"<br />"); ).

Ansonnsten sehe ich kein Fehler in deinem Vorgehen. Eine genauere Fehlerbeschreibung und Fehlersuche sollte man schon machen.

MFg
 
Der Text
Hier deinen normalen Text hin bitte ;) M(i)t V(o)k(a)l(e)n
ist der Text, den ich in der textarea vorgegeben habe.
Ich gebe immer irgendwelche Zeichenketten ein also dkslnskda...
und es wird nicht umgebrochen, der Text geht über die blockquote hinaus.

echo $_POST["text"]; ist dann ...
Momentmal ich habe es gerade nochmal mit einem normalen Text und nicht dfgertzuei...
probiert und jetzt funktioniert es.

EDIT
öh komisch.
Wenn ich normal in mein Formular schreibe, dann kommt keine Scrollleiste und wenn ich ksadldsam usw usw. schreibe, dann kommt eine. Bei dsjnkadsn... wird nicht umgebrochen bei normalem Text schon.
 
Zuletzt bearbeitet:
Werbung:
Ich hab es mal bei mir getestet:
PHP:
<?php
$filter = array("a","e","i","o","u","A","E","I","O","U",);
$text = "Ein Text der normal von dem textareafeld kommt und \n sind dabei natürlich und noch viel mehr text \n mit text test test test test bla xxxxxxxx\nbla";
        echo "<p>Dein Text ohne Vokale:</p>";
        $vtext = str_replace($filter, "", $text);
        $vtext = htmlentities($vtext);
        $vtext = wordwrap($vtext,50,"<br />");
        echo "<blockquote>".$vtext."</blockquote>";
?>
Funktioniert wunderbar.

EDIT
öh komisch.
Wenn ich normal in mein Formular schreibe, dann kommt keine Scrollleiste und wenn ich ksadldsam usw usw. schreibe, dann kommt eine. Bei dsjnkadsn... wird nicht umgebrochen bei normalem Text schon.
Ja, die Funktion wordwrap unterbricht WÖRTER, nicht ZEICHEN. Also wenn du nur "njufnheirurgfuioerhgihejtgiohbdtujiounzgtivrhrjbnkjtlhslkurhge" schreibst, dann unterbricht er da nichts. Erst wenn du "whitespaces" zwischen den wörtern hast.

Mfg
 
Ich würde erst wordwrap() machen und dann htmlentities(), da sonst die Entities umgebrochen werden könnten.

Wozu braucht man überhaupt htmlentities()? Das muss Jahre her sein, dass ich die Funktion benutzt habe.
 
Werbung:
Nur htmlspecialchars(). Entities braucht man nicht, wenn man das Zeichenkodierung im Griff hat.

@Furien: htmlspecialchars() macht folgendes:
  • '&' (ampersand) becomes '&amp;'
  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
  • ''' (single quote) becomes ''' only when ENT_QUOTES is set.
  • '<' (less than) becomes '&lt;'
  • '>' (greater than) becomes '&gt;'
 
Werbung:
Zurück
Oben