cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
wichtigWir suchen PHP-Entwickler/innen (Freelancer oder Vollzeit)
Forum
Aktuellste Beiträge
Forenregeln

Community
BB-Codes
Tags
Chat
Suche (Web)
Wer ist online?
Top-User

Basar


Statistik
Mitglieder gesamt: 69388
Mitglieder online: 0
Gäste online: 5
mehr...

Anzeige
Forum » Forum: Website & Webprogrammierung » Thread: (erledigt) Mit PHP nur eine gewissen Anzahlen von Zeichen aus lesen

Thread: (erledigt) Mit PHP nur eine gewissen Anzahlen von Zeichen aus lesen

Tags: MySQL , daten , auslesen

12.04.2008 11:48 Uhr

 

Status: offline
Hi
ich habe folgenden Codeschnipsel mit dem ich einen Text auslesen kann in dem Newssystem was ich verwende.
PHP:
1
nl2br(smilie(bbcode($Result->News_Text)))
Nun mein Problem, ich möchte nur 100-150 Zeichen auslesen lassen und falls man weiter lesen möchte soll man auf einen Link klicken. Die Seite, wo der volle Text angezeigt werden soll ist vorhanden, nur weiß ich nicht wie ich die Zeilen in der Abfrage die ich oben als Code eingefügt habe eingrenze. Hoffe ihr könnt mir dabei Helfen.
1 mal bearbeitet
___________________________
It's time to say goodbye to Internet Explorer
It's time to use Mozilla Firefox 3.6
www.mozilla-europe.org/de/
12.04.2008 12:00 Uhr

 

Status: offline
PHP:
1
substr(nl2br(smilie(bbcode($Result->News_Text))), 0, 125);
Weitere Infos:
http://de.php.net/substr


Aus Erfahrung kann ich aber sagen, dass es sinnvoller ist, den ersten kompletten Satz auszugeben. Dazu nimmt man Explode: http://de.php.net/explode
PHP:
1
implode(".", explode(".", nl2br(smilie(bbcode($Result->News_Text))), 1) );
]
Erläuterung: Explode zerstückelt den String anhand des Punktes in ein Array. Die Zahl 1 gibt an, dass eins Satz in diesem Array steht. Implode flickt nun alle Einträge des Arrays wieder mit einem Punkt zusammen. Das ist, damit der Code erweiterbar bleibt, also dass man auch eine höhere Zahl einstellen kann.
___________________________
Folgt mir auf Identi.ca/
12.04.2008 14:50 Uhr

 

Status: offline
Ich denk doch mal, dass die smilie-Funktion so Zeichenfolgen gegen Bilder ersetzen soll. In dem Fall ist dann die methode mit explode() und implode() ein wenig für Tonne (Ich hab den Teil von Funatiker mal für die Erklärung ein wenig anders geschrieben, funktioniert jedoch noch identisch):
PHP:
1
2
3
4
5
6
7
8
9
<?php
// Zu verarbeitende Nachricht
$string = 'toller Text mit einem :D der gekürzt werden soll.';
// (1)
$tmp = nl2br(smiley(bbcode($string)));
// (2)
$result1 = explode('.',$tmp,1);
// (3)
$result2 = implode('.',$result1);

So: Was passiert genau?

(1) Die ursprünglichen Funktionen werden ausgeführt und liefern ein Ergebnis. Man erhält also als Rückgabe sowas wie (sofern smiley() die Zeichenketten gegen image-Tags austauscht)
$tmp = 'toller Text mit einem <img src="smileys/laugh.jpg" [...]/> der gekürzt werden soll.'
(2) Explode liefert einen Array, aller Elemente, die zwischen den '.' stehen. Durch den optionalen 3. Parameter (Limit) mit 1 Element:
$result = array('toller Text mit einem <img src="smileys/laugh');
(3) Das eine Element wird wieder zusammengebaut (Warum auch immer) Und man hat einen "Satz" mit einem kaputten (x)HTML-Tag

Bemerkungen

1) Statt implode(explode(...)) wäre es sinnvoller mit strpos() die Position des '.' zu ermitteln und einen substr() vom Anfang bis zu der Position zu verarbeiten.
2) Sollte man zusätzlich noch eine maximale Länge des Satzes verwenden, da es Leute geben soll, die die Länge unnötig weit aufblasen und so das ganze News-System schon ein bisschen komisch aussehen könnte, wenn man das auf einer anderen Seite einbinden möchte, oder man erhält zb Fehler beim Speichern in einer Datenbank, etc...
3) Für ermitteln des ersten Satzes bei Zeichenketten, die HTML-Tags enthalten, ist eigentlich ein regulärer Ausdruck angebrachter.
1 mal bearbeitet
___________________________
C++ ist ein Esel mit Ledersitzen und elektrischen Fensterhebern, Java ist auch eine Insel und Python ist eine Schlange...
12.04.2008 15:03 Uhr

 

Status: offline
Danke für die Idee bloß nun stellt sich die frage welche der beiden Methoden nun das beste ist, weil ich ja nur verhindern möchte, dass die mit viel Text zu groß sein soll. Die substr-Methode schein vom Verständnis wie sie funktioniert und wie man die Länge beeinflussen kann am einfachsten. Mich würde nun Interessieren wie die strpos() Methode funktionieren würde.
___________________________
It's time to say goodbye to Internet Explorer
It's time to use Mozilla Firefox 3.6
www.mozilla-europe.org/de/
12.04.2008 15:21 Uhr

 

Status: offline
Die Methode ist identisch. Man verwendet nur nicht explode(), da die Funktion ein bisschen oversized für das Ganze ist:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$text = ...;
 
$pos = strpos($text,'.');
if (false!==$pos) {
    // punkt enthalten
    $text = substr($text,0,$pos); // oder $pos-1
}
$text = substr($text,0,255); // maximallänge auch wenn Satz länger ist
...
Aber auch hier hast du genau das gleiche Problem mit kaputten html-tags.
Du könntest allerdings zusätzlich einfach noch nen regulären Ausdruck drüberlatschen lassen und kaputte Tags noch entfernen:
PHP:
1
2
3
<?php
...
$text = preg_replace('/<[^>]$/','',$text);
(Wie immer ungetestet)
1 mal bearbeitet
___________________________
C++ ist ein Esel mit Ledersitzen und elektrischen Fensterhebern, Java ist auch eine Insel und Python ist eine Schlange...
12.04.2008 16:35 Uhr

 

Status: offline
Okay danke ich werde wohl mal substr und strpos ausprobieren und das wählen was am besten funktioniert.
___________________________
It's time to say goodbye to Internet Explorer
It's time to use Mozilla Firefox 3.6
www.mozilla-europe.org/de/
Ähnliche Threads Forum Ähnlichkeitsgrad
 FTP wo und wie? Fragen zu cybton.com 2
 MySQL Daten Kopieren Website & Webprogrammierung 2
 [gelöst] Fragen bezüglich MySQL Website & Webprogrammierung 1
 [gelöst] [MySQL] - Seitenumbruch nach z.B. 10 Postings Website & Webprogrammierung 1
 Mysql zwei Tabellen verbinden Website & Webprogrammierung 1
 [Problem] MySQL mehrere Einträge gleichzeitig verändern geht nicht Website & Webprogrammierung 1
 MySQL nur für Localhost Software & Betriebssysteme 1
nach obennach oben

Copyright © 2014 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news
ANEXIA - PHP Entwicklung - Web-Entwicklung - Fritz!Box Anrufmonitor für Mac OS - Rolladen, Markisen und Jalousien in Stuttgart - Rolladen in Stuttgart - SMSjobs