substr() bei Heise.de news...

Vaio82

Erfahrenes Mitglied
Guten Abend...

Ich habe hier ein kleines Problem.... Ich möchte die Ausgabe auf (einen String mit) 35 Zeichen minimieren. Im Moment kann die Länge der Ausgabe variabel sein. Manchmal 20 Zeichen, manchmal 400+.

Dazu habe ich folgendes Script:

PHP:
? 


$fcontents = join ('', file ('http://www.heise.de/newsticker/heise.rdf'));

$fcontents = str_replace ("</item>", "", $fcontents);
$fcontents = str_replace ("</link>", "", $fcontents);

$splices = explode ("<item>", $fcontents);

for ($i = 1; $i < count($splices); $i++){
	$link = explode("<link>",$splices[$i]);
	$link[1] = strip_tags($link[1]);
	
	
	
	$headline = str_replace ("<title>", "<img src=\"mark_rot.gif\" border=\"0\">&nbsp;&nbsp;<a href=\"" . trim($link[1]) . "\" target=\"_blank\"  onFocus=\"if(this.blur)this.blur()\">", $splices[$i]);
 # Ich habe mir gedacht substr("$splices[$i]",1,35); zu schreiben, jedoch treten dann Fehler in der Ausgabe auf (Mal ein <br> zu wenig, mal fehlt das Bild (<img src=\"mark_rot.gif\">) vor der Ausgabe... 
	$headline = str_replace ("</title>", "</a>"."", $headline);
	$headline = explode ("<link>", $headline);
	$headline = $headline[0];
	print $headline . '<br><br>';
}

print "</span>";

?>

Mein Lösungsansatz steht als Kommentar im Script.

Ich würde mich freuen, wenn mir jemand helfen würde :)
 
Was für Fehler treten denn auf ? Ich meine substr() sit eine recht einfach Lösung dafür, würde mich ärgern wenn das nicht nutzbar wäre :)

Btw: substr("$splices[$i]", 0, 35); - sonst müsste dann ein Buchstabe/Zeichen am Anfang fehlen :)
 
Du könntest das mit preg_replace() machen, ist für diesen Zweck besser geeignet:
PHP:
<?php
$fcontents = join ('', file ('http://www.heise.de/newsticker/heise.rdf'));

function shorter($out)
{
	if(strlen($out)>35){$out=substr($out,0,35).'...';}return htmlentities(stripslashes($out));
}

echo preg_replace("/((.*<\/channel>|)\s*(-|)\s*<item>\s+<title>(.+?)<\/title>\s+<link>(.+?)<\/link>\s*(<\/item>|)\s*(<\/rdf:RDF>|))/se","'<img src=\"mark_rot.gif\" border=\"0\">&nbsp;&nbsp;<a href=\"'.trim('\\5').'\"target=\"_blank\"  onFocus=\"if(this.blur)this.blur()\">'.shorter('\\4').'</a><br><br>'",$fcontents);
?>
 
Danke, dass Du Dich äußerst, jedoch gibt er mir folgenden Fehler:

Warning: Unknown modifier 'c' in /www/htdocs/v034347/start/heise.php on line 9


In Zeile 9 steht die echo-Ausgabe: echo preg_replace("/((.*</....
 
Zurück