< probem >RSS-Feeds und das bescheiden von Texten < /probem >

Bluebo

Mitglied
Hallo liebe Community,

ich baue mir gerade für ein Projekt ein Rss-Feed zusammen.
Klappt auch alles so weit ganz toll.

Dann dachte ich mir, kürzen wir das Ganze mal mit ein wenig Php.
Da der text in der Datenbank mit Html geplastert ist, enfernte ich erstmal den ganzen Tag-Salat.
Ja, das lief ja gut. Das funktionierte auch schon mal.
Jetzt kann ich ja eig. den Text ohne Probleme kürzen.
Aber das war dann mal wieder ein fall von "denkste" :).

Mein Ansatz war folgender:
Code:
while( $row = mysql_fetch_assoc( $result ){
	
	$text = strip_tags( $row['text'] ); //Html-Tags los werden
	
	if( strlen( $text ) <= 100 ){

		$output = $text;			

	}else{
		 
		$output = substr( $text, 0, strpos( $text, ".", 100 )+1 )."...";
	}
	

	
	// Ausgabe des beschnittenen Textes

	echo "<description><![CDATA[".$output."]]></description>";
	
}

So, das funtionierte auch, aber nur bedingt. Die texte wurden nach 100 Zeichen
beim einem auftauchenden Punkt abgeschnitten. Dann kam aber das "Aber" :)!

Bei allen anderen Texten die die Kürzer waren als 100 Zeichen, beschnitt es sie komplett bzw. zeigte Php
den ersten Duchstaben an und setzte das "..." da hinter. Das sollte doch aber eig. nicht passieren,
da ich ja...

Code:
	if( strlen( $text ) <= 100 ){

		$output = $text;			

	}else{
		 
		$output = substr( $text, 0, strpos( $text, ".", 100 )+1 )."...";
	}

... die länge des Strings überprüfte und unterscheid, ab wann Php kürzen soll.

Was mache ich da jetzt falsch? Habe ich da jetzt einen Denkfehler drin, oder ist das jetzt ein Käferchen?

Vielleicht kann das einer von euch Profies, dass mir mal erläutern.
Ich bin da ein wenig am gegen die Wand laufen ;).

Was habt Ihr an Erfahrungen beim kürzen von Texten gemacht?
Oder wie macht Ihr das mit dem beschneiden von Strings?
Ich bin ja noch am lernen ^^.

MfG Bluebo
 
Wenn kein Punkt ab dem 101 Zeichen gefunden wird, liefert strpos() ein false, was als Zahl interpretiert mit 0 gleich ist. Das wiederum führt dazu, dass substr() nur ein Zeichen liefert (von Position 0 bis 1).
 
Hi Gumbo,

vielen Dank für die schnelle Anwort!

Wenn kein Punkt ab dem 101 Zeichen gefunden wird, liefert strpos() ein false, was als Zahl interpretiert mit 0 gleich ist. Das wiederum führt dazu, dass substr() nur ein Zeichen liefert (von Position 0 bis 1).

Ich habe es jetzt so gemacht! ^^ Funktioniert bestens.

Code:
$text = strip_tags($row['text']);

if( strlen( $text ) <= 100){

	$output = $text;			

}else{
	if (strpos( $text, ".", 100) == false){
		$output = $text;
	}else{
		$cutit = strpos( $text, ".", 100);
		$output = substr( $text, 0, $cutit+1 )." [...]";
	}
}

Naja ^^, manchmal sieht man halt den Wald vor lauter Bäumen nicht!
Also alles Liebe! Und nochmals vielen Dank!

MfG Bluebo
 
Zurück