Jens Müller: str_ vs. preg_

Beitrag lesen

Guten Morgen Steffi,

wie bekomme ich das unter einem Hut?

Wenn ich dein Script, so wie es hier steht ausführe,
dann kommt bei mir eine Einzeiliger Zeichenwurst
heraus.
Da ich aber die anderen Nachrichten im Thread
gelesen habe, weiß ich dass du die Newlinezeichen
nicht ersetzen möchtest.

Nehmen wir mal an, dass du diesen Artikel kennst.

// Hier möchte ich \r und \n austauschen:
$text = str_replace("\r", "\n", $_POST["nachricht"]);

Also \r Carriage-Return durch Linefeed \n ersetzen:

$text = str_replace("\015", "\012", $_POST["nachricht"]);

//Hier möchte ich nur Buchstaben zulassen, daß
passiert auch, jedoch wird hier folgerichtig \r und
\n ausgeschlossen:
$text = preg_replace("/[^A-Za-z]/", "", $_POST["nachricht"]);

Alle Zeichen die keine Buchstaben sind, werden gelöscht.
Was ja auch richtig ist, das Newline Zeichen, wird
genau wie das Leerzeichen auch, nicht mit angegeben.
Wenn du beide erhalten möchtest, sollten dies im
Ausdruck mit angegeben werden.

$text = preg_replace("/[^a-zA-Z\s\012]/", "", $_POST["nachricht"]);

[^  
a-zA-Z // Alle Buchstabenzeichen, wenn deine [link:http://de.php.net/manual/de/function.setlocale.php@title=Spracheinstellung]  
       // Deutsch ist, dann sind auch die Umlaute (ä,ö,ü)  
       // und das ß als gültige Zeichen enthalten  
\s     // Das Leerzeichen  
\012   // Unix Newlinezeichen  
]

Hat einer eine Lösung?

Eventuell mein Obiges Konstrukt, es erhält Buchstaben
Leer- und Newlinezeichen ersetzt aber alle anderen
Zeichen.

gruesse aus'm ruhrpott
  jens mueller

--
As long as a single mind remembers, as long as a single heart
beats with passion, how can a dream die?
\//_ Live long and prosper
sh:( fo:) ch:| rl:° br:^ n4:| ie:% mo:| va:} de:> zu:) fl:( ss:) ls:> js:|