Autor |
Nachricht |
Lexis
Threadersteller
Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht:
|
Verfasst Do 24.08.2006 11:57
Titel [PHP] Text automatisch kürzen |
|
|
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.
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 24.08.2006 12:22
Titel
|
|
|
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
|
|
|
|
|
Anzeige
|
|
|
Lexis
Threadersteller
Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht:
|
Verfasst Do 24.08.2006 12:57
Titel
|
|
|
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?!
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 24.08.2006 13:58
Titel
|
|
|
Naja, eben genauso wie du es vorher auch gemacht hast. Zeig mal was du bis jetzt schon hast.
|
|
|
|
|
Lexis
Threadersteller
Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht:
|
Verfasst Do 24.08.2006 14:21
Titel
|
|
|
Ich habe nix sinnvolles erhalten... ich komme gerade nicht weiter, weil ich nicht weiß, wo ich die IF Abfrage machen soll?! bzw. wie....
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 24.08.2006 16:27
Titel
|
|
|
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
|
|
|
|
|
Lexis
Threadersteller
Dabei seit: 05.07.2005
Ort: München
Alter: -
Geschlecht:
|
Verfasst Mo 28.08.2006 15:34
Titel
|
|
|
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.....
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 29.08.2006 12:32
Titel
|
|
|
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
|
|
|
|
|
|
|
|
Ä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?
|
|