Seite 1 von 1

RDF-Parser Zeichenbegrenzung

Verfasst: 17.06.2008 11:10
von Elektron
Hallo,

möchte gerne die Textzeichen vom RDF-Praser auf 100 Zeichen im Text begrenzen (Überschirft soll vollständig angezeigt werden).

Wer kann mir weiterhelfen?

Vermutlich muss im folgenden Code die Begrenzung von news_item.TEXT auf 100 begrenzt werden:

Code: Alles auswählen

<?php
function cache_file($url, $cachefile, $cachetime = 900) {
    $stat = @stat($cachefile);
    if ($stat[9] < (time() - $cachetime)) {
		$fp_url = fopen($url, 'r');
		$fp_cache = fopen($cachefile, 'w');
		while($str = fread($fp_url, 1024)) {
			fwrite($fp_cache, $str);
		}
		fclose($fp_url);
		fclose($fp_cache);
		return false;
	}
	else {
		return true;
	}
}

class rdf_parser {
	var $file;
	var $cache_file = '';
	var $cache_time = 0;
	var $cache_used = false;

	var $content = '';

	var $channel = array();
	var $items = array();

	function rdf_parser($file, $cache_file='', $cache_time=0) {
		$this->file = $file;
		$this->cache_file = $cache_file;
		$this->cache_time = $cache_time;
		//$this->parse();
	}

	function match($text, $elements) {
		$ret = array();
		foreach($elements as $element) {
			if(preg_match("#<$element>(.*?)</$element>#si", $text, $matches)) {
				$ret[$element] = $matches[1];
			}
		}
		return $ret;
	}

	function parse() {
		$file = $this->file;
		if($this->cache_file && $this->cache_time) {
			$this->cache_used = cache_file($this->file, $this->cache_file, $this->cache_time);
			$file = $this->cache_file;
		}
		$this->content = implode('', file($file));

		if(preg_match('#<channel>(.*?)</channel>#si', $this->content, $matches)) {
			$this->channel = $this->match($matches[1], array('title', 'description', 'link'));
		}
		preg_match_all('#<item>(.*?)</item>#si', $this->content, $matches, PREG_PATTERN_ORDER);
		foreach($matches[1] as $item) {
			$this->items[] = $this->match($item, array('title', 'description', 'link'));
		}
	}

	function template_output($block_name) {
		global $template;
		$row = 0;
	    foreach($this->items as $item) {
	        $template->assign_block_vars($block_name, array(
	            'ROW_CLASS' => ($row++%2 == 0 ? 'row1' : 'row2'),
	            'TITLE' => $item['title'],
	            'TEXT' => $item['description'],
	            'URL' => $item['link']
	        ));
	    }
	}
}

function show_rdf($url, $block_name, $cache_file='', $cache_time=0) {
	$parser = new rdf_parser($url, $cache_file, $cache_time);
	$parser->parse();
	$parser->template_output($block_name);
}
?>
Wäre super, wenn mir hier jemand helfen könnte.

Im vorraus schonmal ein herzliches Dankeschön.

Gruß Elektron