php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.03.2005, 16:31  
Gast
 
Beiträge: n/a
Standard Was mache ich falsch? Funktion Automatischer Zeilenumbruch

Hallo,

ich habe mir ne Funktion zusammengebastelt, die sollte eigentlich
zu lange Wörter umbrechen.
Hier bei sollten jedoch Tags < > ausgenommen sein, damit keine Darstellungsfehler entstehen..

Leider funktioniert die Funktion nicht. Wenn ich jedoch das "and(aktiv==1)" bei " if (($count > $bruchbei)and(aktiv==1)) " wegmache, funktioniert sie zwar, behandelt aber keine Tags.

Was mache ich falsch? bin noch anfänger...

hier der Quelltext:

//$textinput = Text, der behandelt wird
// $bruchbei = Nach wievielen Zeichen soll umbruch erfolgen
// $whatspace = Was soll an Umbruchstelle geschehen? Leerzeichen oder
einfügen


function breakit($textinput,$bruchbei, $whatspace)
{

$count = 0; // Zählt Zeichen im aktuellen Wort
$aktiv = 1; // in < > oder nicht ?

for ($i = 0; $i < strlen($textinput); $i++)
{
if ((substr($textinput, $i,1)== " ") or
(substr($textinput, $i,4)== "
"))

{$count = 0;} // Reset, da neues Wort

else

{
$count++;

if (substr($textinput, $i,1)== "<")
{$aktiv = 0;} //deaktiv nach <
if (substr($textinput, $i,1)== ">")
{$aktiv = 1;} //aktiv nach >



if (($count > $bruchbei)and(aktiv==1))
{
$textinput = substr($textinput, 0, $i) . $whatspace . substr($textinput, $i, strlen($textinput));
$count = 0;
}

} // else
}

return $textinput;

}
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.03.2005, 18:56  
Gast
 
Beiträge: n/a
Standard

1. So einen unformatiert geposteten Quellcode sehe ich mir erst garnicht an
2. Richtig debuggen
2.1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2.2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
2.3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
2.4. Schritt 2.3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
2.5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
2.6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
2.7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
3. Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

Gruß
phpfan
 
Alt 27.03.2005, 19:13  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

punkt 0 hast du vergessen:

0. ich gucke bei php.net nach ob es nicht bereits eine funktion gibt, die genau das macht, was ich will:

http://de.php.net/manual/de/function.wordwrap.php

axo ist offline  
Alt 27.03.2005, 19:36  
Gast
 
Beiträge: n/a
Standard

@phpfan: Danke für die Besserwissersprüche, bin eben Anfänger

@axo: Danke! Ignoriert diese wordwrap funktion HTML Tags?

oder muss ich das hier verwenden (stand dort als Kommentar):
frage mich gerade aber noch, was $cols und $cut sein soll.


function even_better_better_wordwrap($str,$cols,$cut) {
$tag_open = '<';
$tag_close = '>';
$count = 0;
$in_tag = 0;
$str_len = strlen($str);
$segment_width = 0;

for ($i=0 ; $i<=$str_len ; $i++){
if ($str[$i] == $tag_open) {
//tamos dentro de uma tag html
$in_tag++;
} elseif ($str[$i] == $tag_close) {
//fechamos uma tag html
if ($in_tag > 0)
$in_tag--;
} else {
if ($in_tag == 0) {
//se nao estamos dentro de uma tag html
$segment_width++;
if (($segment_width > $cols) && ($str[$i] != " ")) {
//se passamos o limite de colunas acrescentamos o $cut no sitio
$str = substr($str,0,$i-1).$cut.substr($str,$i,$str_len-1);
$i += strlen($cut);
$str_len = strlen($str);
$segment_width = 0;
}
}
}
}
return $str;
}


(Bitte nicht über Formatierung jammern, dieses Forum hat die Formatierung gerade versaut...)
 
Alt 27.03.2005, 19:41  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von andreasm
@phpfan: Danke für die Besserwissersprüche, bin eben Anfänger
Und anscheinend immer noch nicht in der Lage
PHP-Code:
 und 
um den Quellode zu posten. Deswegen gilt immer noch Punkt 1.
Zitat:
Zitat von andreasm
ich habe mir ne Funktion zusammengebastelt
Zitat:
Zitat von andreasm
frage mich gerade aber noch, was $cols und $cut sein soll.
Du kennst deinen eigenen Variablen nicht?

Gruß
phpfan
 
Alt 27.03.2005, 19:53  
Gast
 
Beiträge: n/a
Standard

bitte lesen *g*

Zitat:
Du kennst deinen eigenen Variablen nicht?
doch!!!

Zitat:
oder muss ich das hier verwenden (stand dort als Kommentar):
frage mich gerade aber noch, was $cols und $cut sein soll.
das stand bei der Funktion wordwrap, ich habe den Code ja nur hier gepostet.

naja vielleicht finde ich es ja selbst raus....

achso und musst ja nicht meinen Quellcode anschauen, kannst ja auch ne gleichwertige Alternative sagen. quasi Wordwrap, dass html Tags ignoriert.
sowas brauche ich halt.
 
Alt 27.03.2005, 20:04  
Gast
 
Beiträge: n/a
Standard

$cols = Anzahl Zeichen, nach denen umgebrochen werden soll
$cut = Womit umgebrochen werden soll, z.B.


Gruß
phpfan
 
Alt 27.03.2005, 20:07  
Gast
 
Beiträge: n/a
Standard

thanks, ich werde das mal ausprobieren und morgen bescheid sagen, obs gefunzt hat
 
Alt 27.03.2005, 20:14  
Gast
 
Beiträge: n/a
Standard

habs gerade getestet... die funktion taugt nichts, da diese den Text immer nach der angegeben Anzahl Zeichen umbricht.

Doch ich möchte nur Wörter, die eine bestimmte Länge haben, umbrechen.
Damit eben die Wörter noch in die Tabelle reinpassen und nicht das Design der Page kaputtmachen.

Zudem "schluckt" sie noch Buchstaben.

siehe z.B. hier:

http://www.rettet-unsere-welt.de/ind...tion=mehr&id=8

hat jmd. ne andere Idee?
 
Alt 27.03.2005, 20:18  
Gast
 
Beiträge: n/a
Standard

Mir ist da keine Funktion bekannt, die deine Bedingungen erfüllt. Da wirst du wohl selber was basteln müssen.

Gruß
phpfan
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
Funktion macht Probleme mokus PHP Tipps 2006 19 20.06.2006 03:16
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
funktion soll funktion aufrufen, welche datei einbindet PHP Tipps 2006 12 13.03.2006 18:31
[Erledigt] Zugriff auf eine Klasse innerhalb einer Funktion -&amp;amp;gt; Fehle PHP-Fortgeschrittene 23 05.02.2006 13:02
fehler in beim übergabewert einer funktion? HTML, Usability und Barrierefreiheit 5 01.12.2005 22:33
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
automatischer zeilenumbruch bei gb ausgabe PHP Tipps 2005-2 6 03.07.2005 11:25
[Erledigt] Automatischer Zeilenumbruch PHP Tipps 2005-2 14 25.06.2005 13:46
Class -- Funktion Creativ PHP Tipps 2005 2 30.03.2005 23:10
[Erledigt] Kein Ausführen der Funktion PHP Tipps 2005 2 27.03.2005 16:56
[Erledigt] Variablen in eine Funktion übernehmen PHP Tipps 2005 1 26.02.2005 17:19
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php designer zeilenumbruch, phpdesigner zeilenumbruch, phpdesigner 7 zeilenumbruch, papdesigner zeilenumbruch, http://www.php.de/php-tipps-2005/20263-mache-ich-falsch-funktion-automatischer-zeilenumbruch.html, php designer 7 zeilenumbruch, php automatischer zeilenumbruch wordwrap, phpdesigner zeilenumbrüche, php lange wörter umbrechen, \pap designer\ seitenumbruch, zeilenumbruch in function, php function umbruch, php funktion zeilenumbruch, pap designer zeilenumbruch, php designer 7 zeilenumbrüche entfernen, textinput zeilenumbrüche keine tags, php funktion für zeilenumbruch, cout automatischer zeilenumbruch, functions.php zeilenumbruch, php designer 2007 zeilenumbruch

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.