CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
03.08.2003, 18:02:25
|
Anfänger
|
|
Registriert seit: Aug 2003
Beiträge: 17
|
|
bestimmte zeichenanzahl...
hi,
ich möchte einen string nach einer bestimmten anzahl von zeichen abbrechen, jedoch vorher noch zum vorherigen leerzeichen zurückspringen, damit das wort (wo die zeichenlänge erreicht wird) nicht auseinandergerissen wird.
ich hatte schon eine idee, dass ich das ganze in einer schleife (z.b. for oder while) einbaue und dann immer mit strlen() ob ich schon die zeichenlänge überschritten hab oder nicht.
ein zweites problem: ich kann nicht einfach <br> benutzen, da ich den text auf einen bild, mit hilfe von imagettftext(), erstellen möchte.
wer kann mir dabei helfen?
__________________
mfg Box
der anfang ist das schwerste und das ende am leichtesten - gut, dass es kein ende gibt (in sachen software)
|
03.08.2003, 18:55:27
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Ich kann Dir nur bei ersterem helfen:
PHP-Code:
<?php
$str='Das ist ein längerer
Text ohne Zeilenumbrüchen, wo
sie niemand braucht und auch
wohl niemand setzen würde.';
$max_chars=100;
$words=explode(' ', $str);
$str_neu='';
for ($i=0; $i<count($words); $i++) {
if (strlen($str_neu)+strlen($words[$i])<$max_chars) {
$str_neu.=$words[$i].' ';
}
}
echo $str_neu;
?>
Die Zeichenkette wird an den Leerzeichen aufgetrennt und dann in einer Schleife überprüft, ob das nächste Wort noch angehangen werden kann ohne das Maximum zu überschreiten.
Das Ding ist aber noch nicht so toll. Schließlich wird HTML nicht beachtet. Sollte da mal ein Link dazwischen sein, dann sind 100 Zeichen schnell voll.
|
18.10.2006, 11:55:24
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: bestimmte zeichenanzahl...
Zitat:
Zitat von *c*4*
$str='Das ist ein längerer
Text ohne Zeilenumbrüchen, wo
sie niemand braucht und auch
wohl niemand setzen würde.';
$max_chars=100;
$words=explode(' ', $str);
$str_neu='';
for ($i=0; $i<count($words); $i++) {
if (strlen($str_neu)+strlen($words[$i])<$max_chars) {
$str_neu.=$words[$i].' ';
}
}
|
Eine Frage zu diesem Script. Wenn ich dies richtig erkenne so zählt $i die Wörter und $max_chars ist die Grenze für die einzelen Zeichen. Es funktioniert auch, ist mir bewußt,
doch wo, an welcher Stelle werden die Zeichen gezählt und mit $max_chars verglichen, damit eben bei der Grenze der "Ausstieg" statt findet??
cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
18.10.2006, 13:45:23
|
|
Anfänger
|
|
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
|
|
AW: bestimmte zeichenanzahl...
da wos fett ist
Er zählt die vorhandenen Zeichen + die Zeichen im nächsten Wort. je nachdem ob die maximale Anzahl an Zeichen überschritten wird oder nicht wird das Wort noch an die Zeichenkette angehängt.
$str='Das ist ein längerer
Text ohne Zeilenumbrüchen, wo
sie niemand braucht und auch
wohl niemand setzen würde.';
$max_chars=100;
$words=explode(' ', $str);
$str_neu='';
for ($i=0; $i<count($words); $i++) {
if (strlen($str_neu)+strlen($words[$i])<$max_chars) {
$str_neu.=$words[$i].' ';
}
}
strlen -- Ermitteln der String-Länge
http://de3.php.net/manual/de/function.strlen.php
__________________
There are 10 people those who understand binary and those who dont.
Lustich macht den Sound vorher an: Schniedelwutz
Geändert von daFloh (18.10.2006 um 13:46:35 Uhr)
|
18.10.2006, 14:45:00
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: bestimmte zeichenanzahl...
Zitat:
Zitat von daFloh
da wos fett ist
Er zählt die vorhandenen Zeichen + die Zeichen im nächsten Wort. je nachdem ob die maximale Anzahl an Zeichen überschritten wird oder nicht wird das Wort noch an die Zeichenkette angehängt.
|
Jetzt ist der Groschen gefallen :-)
Damit habe ich keinen Zähler den ich an sich auswerten könnte, so wie $i=0 den ich mit $i++ hochzähle, da $strlen die gesamte Variable für sich hochzählt.
Schade ich wollte, wenn $max_chars erreicht ist, nicht nur den Text einfach abschneiden, sondern anstelle zumindest mit "... Text abgeschnitten" darauf hinweisen.
Gut, muss ich mir was anderes einfallen lassen.
Vielen Dank!
cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
18.10.2006, 15:26:54
|
|
Anfänger
|
|
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
|
|
AW: bestimmte zeichenanzahl...
Zitat:
Zitat von Franzx
Schade ich wollte, wenn $max_chars erreicht ist, nicht nur den Text einfach abschneiden, sondern anstelle zumindest mit "... Text abgeschnitten" darauf hinweisen.
Gut, muss ich mir was anderes einfallen lassen.
|
Kannst Du doch
PHP-Code:
$str='Das ist ein längerer Text ohne Zeilenumbrüchen, wo sie niemand braucht und auch wohl niemand setzen würde.';
$max_chars=100; $words=explode(' ', $str);
$str_neu=''; for ($i=0; $i<count($words); $i++) { if (strlen($str_neu)+strlen($words[$i])<$max_chars) { $str_neu.=$words[$i].' '; } else{ $str_neu.="..."; } }
__________________
There are 10 people those who understand binary and those who dont.
Lustich macht den Sound vorher an: Schniedelwutz
Geändert von daFloh (18.10.2006 um 15:27:57 Uhr)
Grund: Fehler drin gehabt
|
19.10.2006, 08:35:30
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: bestimmte zeichenanzahl...
Leider nicht.
Mit Deiner vorgeschlagenen Lösung macht er für jedes Wort, was sich nicht mehr innerhalb von $max_chars befindet, diese Punkte.
Diese werden zwar ans Ende gesetzt, doch bei zehn Worten sind das nicht nur 3 Punkte, sondern 30 Punkte.
Der Aufbau meines Quelltextes ist wie folgt:
PHP-Code:
$result = mysql_query("SELECT ... "); while($row = mysql_fetch_array($result)) { $max_chars=100; $words=explode(' ', $row['text']);
$str_neu=''; for ($i=0; $i<count($words); $i++) { if (strlen($str_neu)+strlen($words[$i])<$max_chars) { $str_neu.=$words[$i].' '; } else{ $str_neu.=' ...'; } } Ausgabe der Daten }
__________________
Für die richtige Frage gibt's die richtige Antwort!
Geändert von Franzx (19.10.2006 um 08:42:17 Uhr)
|
19.10.2006, 09:21:17
|
|
Anfänger
|
|
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
|
|
AW: bestimmte zeichenanzahl...
Sorry,
Naja ganz dreißig Punkte werden es wohl nicht gewesen sein...
PHP-Code:
$result = mysql_query("SELECT ... ");
while($row = mysql_fetch_array($result))
{
$max_chars=100;
$words=explode(' ', $row['text']);
$str_neu='';
for ($i=0; $i<count($words); $i++) {
if (strlen($str_neu)+strlen($words[$i])<$max_chars) {
$str_neu.=$words[$i].' ';
}
else{
$str_neu.=' ...';
break; // Noch hinzufügen
}
}
Ausgabe der Daten
}
__________________
There are 10 people those who understand binary and those who dont.
Lustich macht den Sound vorher an: Schniedelwutz
|
19.10.2006, 09:37:04
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: bestimmte zeichenanzahl...
Zitat:
Zitat von daFloh
Sorry,
Naja ganz dreißig Punkte werden es wohl nicht gewesen sein...
|
Tatsächlich ist es so, dass das entsprechende Feld des DS mit < 200 Zeichen auskommt. Allerdings gibt es ab und an Sonderfälle in denen es auch 2000 Zeichen sein könnten und deshalb diese Eingrenzung, die allerdings nur bei der Druckausgabe angewendet wird.
Super, so funzt es!
Nochmal vielen Dank, so ist mein Tag schon wieder gerettet.
Muss gleich mal eben noch nachsehen wo der Unterschied zwischen break und exit liegt. Hatte den Ausstieg nämlich mit exit versucht.
cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
19.10.2006, 09:53:43
|
|
Anfänger
|
|
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
|
|
AW: bestimmte zeichenanzahl...
exit beendet die komplette wietere Scriptausführung *denkz*
break unterbricht einfach nur die übergeordnete Schleife und setzt den Code am Schleifenende fort.
__________________
There are 10 people those who understand binary and those who dont.
Lustich macht den Sound vorher an: Schniedelwutz
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:37:23 Uhr.
|