Homepage Inspire-world | Forum
CGI/Perl Workshops "Layoutschoner"

 Inhaltsverzeichnis/Codeschnipsel Übersichtsseite/"Layoutschoner" Buchstabenzähler
Da hat man sich Mühe gegeben sein Layout ansprechend zu gestalten und dann kommt einer daher und lässt z.B. im Gästebuch - er muss ja seinen Frust ablassen - den Finger eine kleine Ewigkeit auf einer Taste.

"Teeeeeeeeeeeeeeeeeeeeeeeeeeeeessssssssssssssssssst" oder ähnlicher Schwachfug sprengt dann meist das Layout weil kein Leerzeichen für einen Zeilenumbruch da ist. Mit dieser kleinen Routine ist Schluss damit. Frei einstellbare maximal Wortlänge lassen keine Wünsche offen.
# Welches Formularfeld soll geprüft werden?
$zeile = $FORM{'eintrag'};
# Wie lang darf ein Wort maximal sein?
$max_zeichen ='40';

@alle_worte = split / /, $zeile;
foreach $wort (@alle_worte) {
$i=0;
my @buchstaben = map $i++, split //, $wort;
if ($i > $max_zeichen) {
$mitteilung .= "<li>Sie haben zuviele Zeichen ohne Leerzeichen dazwischen eingegeben!";
$ungueltig = Fehlermeldung;
}
}
Diese kleine Routine passt wunderbar zu den Formularprüfungscodeschnipseln

Hier eine weitere Möglichkeit des erzwungenen Umbruches. Hier wird der Zeilenumbruch nach einer festgelegten Zeichenanzahl (50 <=> $text =~ s/(\S{50}) ... ) eingeleitet, aber HTML Code, z.B. ein langer Link (das was zwischen <a href="... "> steht) und wird intakt gelassen.
#!/usr/bin/perl

#Fehlerausgabe an Browser
use CGI::Carp qw(fatalsToBrowser);

# HINWEIS !!! 
# Variableninhalt von "$text" aus  Layoutgruenden umgebrochen.
# Steht normal in einer Zeile

$text = "Das ist ein Text mit einem ganz langen Wort - 
Donaudampfschifffartskapitänsgesellschaft - 
und dazu kommt ein echt langer HTML Code 
<a href=\"http://www.einelangedomainmitvielenzeichen.de/cgi-bin/script.pl?
parameter=Donaudampfschifffartskapitaensgesellschaft\">
Donaudampfschifffartskapitänsgesellschaft</a>";

#################################################
print "Content-type: text/html\n\n";

# Der Reguläre Ausdruck der die Arbeit erledigt
$text =~ s/(\S{50})(?:(?![^<]*>))/$1<br>/gi;

# Ausgabe in einer Tabelle
print qq~
<table width="350" cellspacing="2" cellpadding="2" border="1">
<tr>
    <td valign="top"><font face="Verdana, Arial" size="2">$text</font></td>
</tr>
</table>
~;


 Zum Inhaltsverzeichnis/Codeschnipsel Übersichtsseite/"Layoutschoner" Buchstabenzähler
Autor: Helmut Walter Homepage Inspire-world Fragen, Anregungen und Hinweise bitte in das Forum

Valid HTML 4.0! Valid CSS!