SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.08.2003, 18:02:25
Box Box ist offline
Anfänger
 
Registriert seit: Aug 2003
Beiträge: 17
Box eine Nachricht über ICQ schicken
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)
Mit Zitat antworten
  #2  
Alt 03.08.2003, 18:55:27
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 18.10.2006, 11:55:24
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: bestimmte zeichenanzahl...

Zitat:
Zitat von *c*4* Beitrag anzeigen
$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!
Mit Zitat antworten
  #4  
Alt 18.10.2006, 13:45:23
Benutzerbild von daFloh
daFloh daFloh ist offline
Anfänger
 
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
daFloh eine Nachricht über ICQ schicken daFloh eine Nachricht über AIM schicken daFloh eine Nachricht über MSN schicken
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)
Mit Zitat antworten
  #5  
Alt 18.10.2006, 14:45:00
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: bestimmte zeichenanzahl...

Zitat:
Zitat von daFloh Beitrag anzeigen
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!
Mit Zitat antworten
  #6  
Alt 18.10.2006, 15:26:54
Benutzerbild von daFloh
daFloh daFloh ist offline
Anfänger
 
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
daFloh eine Nachricht über ICQ schicken daFloh eine Nachricht über AIM schicken daFloh eine Nachricht über MSN schicken
AW: bestimmte zeichenanzahl...

Zitat:
Zitat von Franzx Beitrag anzeigen
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
Mit Zitat antworten
  #7  
Alt 19.10.2006, 08:35:30
Franzx Franzx ist offline
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)
Mit Zitat antworten
  #8  
Alt 19.10.2006, 09:21:17
Benutzerbild von daFloh
daFloh daFloh ist offline
Anfänger
 
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
daFloh eine Nachricht über ICQ schicken daFloh eine Nachricht über AIM schicken daFloh eine Nachricht über MSN schicken
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
Mit Zitat antworten
  #9  
Alt 19.10.2006, 09:37:04
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: bestimmte zeichenanzahl...

Zitat:
Zitat von daFloh Beitrag anzeigen
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!
Mit Zitat antworten
  #10  
Alt 19.10.2006, 09:53:43
Benutzerbild von daFloh
daFloh daFloh ist offline
Anfänger
 
Registriert seit: Oct 2006
Ort: Berlin
Alter: 46
Beiträge: 31
daFloh eine Nachricht über ICQ schicken daFloh eine Nachricht über AIM schicken daFloh eine Nachricht über MSN schicken
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
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:37:23 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt