Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
08.06.2003, 14:56
K-Putt



Ich arbeite grade an einem kleinen Gästebuch, und da gibt es ja immer die lustigen Leute die überlange strings eintragen, zb. 500x AAA hintereinander. Dadurch gibts keinen Zeilenumbruch und die Tabelle mit dem inhalt wird gezerrt und somit das Layout gesprengt.

Könnte mir jemand ein paar Tips geben, um solche überlangen strings irgendwie herauszufinden / aufzuteilen z.b. mit nem leerzeichen dazwischen?
Bzw. geht das überhaupt?

Danke,
kputt

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
001
08.06.2003, 15:17
theDon



PHP-Quellcode:<?php
$string 
preg_replace("/([A-Z]{100,})/i"'preg_replace("/([A-Z]/i{10,})([A-Z]/i{10,})", "$1 $2", "$1");'$string);
?>
nicht getestet, dürfte aber funktionieren. ist auch sicher nicht optimal.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
08.06.2003, 15:23
K-Putt



Könntest du mir den Code etwas näherbringen?
Copy & Paste bringt mir nichts, ich würds gerne verstehen

[edit]
Funktioniert btw. nicht

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 08.06.2003 um 17:55 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
08.06.2003, 19:03
theDon



ist btw doch noch nen fehler drin:
PHP-Quellcode:<?php
$string 
preg_replace("/([A-Z]{100,})/ie"'preg_replace("/([A-Z]/i{10,})([A-Z]/Ui{10,})", "$1 $2", "$1");'$string);
?>
also:
die erste perl-regex ("/([A-Z]{100,})/i") matched alle buchstaben, die öfter als 100 mal direkt hintereinander stehen. das wird ersetzt durch eine zweite regex, die alle 10 zeichen ein leerzeichen einfügt.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
004
09.06.2003, 02:18
Chronial



das gabs aber schonmal:
http://www.thewall.de/forum/showtopic.php?threadid=33911

und da steht auch meine RegExp-lösung (noch unter meinem alten Nick):
PHP-Quellcode:<?php
$leng
=30//Maximale Wortlänge
preg_replace ('!(\w{'.$leng.'})(?=\w?)!','\\0 ',$subject);
?>
sollte schneller gehn, als das von theDon.
und einfacher zu verstehn ;)
hier die Erklärung:
Der erste Teil "(\w{'.$leng.'})" sucht nach 30 (der Wert von $leng) aufeinander folgende Zeichen. Der zweite Teil schaut, dass danach das Wort auch wirklich noch weiter geht. Und der Linke Teil wird dann einfach um ein Leerzeichen erweitert.
Du solltest dir die Anleitung zu RegExp auf php.net anschaun (Achtung: Viel! ;)
http://at2.php.net/manual/de/pcre.pattern.syntax.php

Wenn du willst, dass das Wort nur getrennt wird, wenn es bestimmt viele Zeichen enthält, nimm foldenden Code:

PHP-Quellcode:<?php
$max
=50//Maximale Wortlänge
$leng=40//Nach wievielen Zeichen leerzeichen einfügen
preg_replace ('!(\w{'.$leng.'})(?=\w{'.$max-$leng.'})!','\\0 ',$subject);
?>

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren


Dieser Beitrag wurde am 09.06.2003 um 02:19 von Chronial bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche