mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 09:40 Benutzername: Passwort: Auto-Login

Thema: [PHP] Text automatisch kürzen vom 24.08.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Text automatisch kürzen
Autor Nachricht
Lexis
Threadersteller

Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht: Weiblich
Verfasst Do 24.08.2006 11:57
Titel

[PHP] Text automatisch kürzen

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

ich habe ein Problem und zwar bastel ich gerade zu Übungszwecken ein bisschen mit einer Datenbank und einer Ausgabe in einem PHP - Dokument.

Jetzt bin ich eben auf folgendes Problem gestoßen. Ich habe einen längeren Text, den ich aber nach eine bestimmten Anzahl von Zeichen automatisch kürzen möchte. Funktioniert mit folgender Abfrage eigentlich wunderbar:

Code:
 
if(strlen($text['text_main'])>2500)
{
 $text['text_main']=substr($text['text_main'],0,1800) . " ... <a href=text1.php?text_id=" . $text['text_id'] . ">weiter</a>";
}



Nur leider zählt er mir die Zeilenumbrüche innerhalb des Textes nicht mit, d.h. wenn ich ein Gedicht habe, komme ich nie auf 2500 Zeichen und er kürz es nicht.

Könnt Ihr mir helfen? Hab schon im Net recherchiert, habe leider nichts entsprechendes gefunden.

Vielen Dank,
Lexis.
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 24.08.2006 12:22
Titel

Antworten mit Zitat Zum Seitenanfang

Auf MySQL Ebene über:

Code:
SELECT
        CONCAT(SUBSTRING_INDEX(`spalte`, ' ', 20), ' …') AS `auszug`
  FROM
        `tabelle`


PHP:

Code:
function wordLimit($string, $length = 50, $ellipsis = '...') {
   return count($words = preg_split('/\s+/', ltrim($string), $length + 1)) > $length ?
       rtrim(substr($string, 0, strlen($string) - strlen(end($words)))) . $ellipsis :
       $string;
}

function stringLimit($string, $length = 50, $ellipsis = '...') {
   return strlen($fragment = substr($string, 0, $length + 1 - strlen($ellipsis))) < strlen($string) + 1 ?
       preg_replace('/\s*\S*$/', '', $fragment) . $ellipsis : $string;
}

echo wordLimit('Diesen kurzen Text auf sechs Wörter kürzen.', 6);
// Ausgabe: "Diesen kurzen Text auf sechs Wörter..."
echo stringLimit('String auf sechs Zeichen kürzen.', 6);
// Ausgabe: "String..."


Zuletzt bearbeitet von m am Do 24.08.2006 12:27, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Lexis
Threadersteller

Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht: Weiblich
Verfasst Do 24.08.2006 12:57
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo M,

vielen Dank für Deine Antwort und den Code. Ich möchte es gerne auf Seiten der PHP - Seite machen.

Nur wie kann ich automatisch einen Link erstellen lassen, auf den ich dann wieder klicken kann und um automatisch die Fortsetzung des Textes auf der nächsten Seite zu lesen??

So, wie ich es schon praktisch bei meinem Code gemacht habe?!
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 24.08.2006 13:58
Titel

Antworten mit Zitat Zum Seitenanfang

Naja, eben genauso wie du es vorher auch gemacht hast. Zeig mal was du bis jetzt schon hast.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Lexis
Threadersteller

Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht: Weiblich
Verfasst Do 24.08.2006 14:21
Titel

Antworten mit Zitat Zum Seitenanfang

Ich habe nix sinnvolles erhalten... ich komme gerade nicht weiter, weil ich nicht weiß, wo ich die IF Abfrage machen soll?! bzw. wie....
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 24.08.2006 16:27
Titel

Antworten mit Zitat Zum Seitenanfang

Code:
if(isset($_GET['text_id'])) {
   ganzer Text ...
   also Ausgabe der Daten aus der MySQL Tabelle ohne der wordlimit Funktion.
} else {
   gekürzter Text ...
   hier also Ausgabe der Daten mit der wordlimit Funktion.
}


Zuletzt bearbeitet von m am Do 24.08.2006 16:29, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Lexis
Threadersteller

Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht: Weiblich
Verfasst Mo 28.08.2006 15:34
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo M,

danke für Deinen Lösungsvorschlag, aber leider check ichs null.

Ich habe es mit der wordlimit - Funktion versucht und mit Deiner IF - Abfrage. Doch leider weiß ich nicht, wo ich den Link erzeugen soll? Der die id an die nächste Seite weiter übergibt?!

Ist leider zu hoch für mich..... * Keine Ahnung... *
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 29.08.2006 12:32
Titel

Antworten mit Zitat Zum Seitenanfang

Jetzt mal auf die schnelle, ungetestet, aber so ungefähr musst du das machen:

Code:
if(isset($_GET['id'])) {
   
   $sql = "SELECT
            text
         FROM
            table
         WHERE
            `id` ='".$_GET['id']."' ";
               
   # Ausgabe des vollen Textes
                     
} else {
      
   $sql = "SELECT
            id,
            text
         FROM
            table";
               
   $result = mysql_query($sql) OR die(mysql_error());
      
   while($row = mysql_fetch_assoc($result)) {
      echo '<p>'.wordLimit($row['text'], 10).'</p> <a href="datei.php?id='.$row['id'].'">mehr</a>';
   }
      
}


Zuletzt bearbeitet von m am Di 29.08.2006 12:33, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Text sinnvoll kürzen mit „substring()”
Text automatisch negativieren auf unterschiedlichen Flächen
InDesign - Seitenformat automatisch als Text ausgeben
CSS / Muster, mit repeat automatisch an Text anpassen?
PHP: Array kürzen
Text farbig hinterlegen, in InDesign automatisch einstellen?
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.