RSS Feed Creator-Problem mit Umlauten- Bug?

Gesperrt
moltimer
Beiträge: 29
Registriert: Di 22. Nov 2005, 16:44
Wohnort: Ahrensburg
Kontaktdaten:

RSS Feed Creator-Problem mit Umlauten- Bug?

Beitrag von moltimer » Fr 13. Jan 2006, 15:14

Hallo Cumminty,

ich habe die RSS Feed Creator bereits fertig und funktionstüchtig eingebaut nach Anleitung hier im Forum. Nachdem ändern einiger Artikel bekomme ich nun folgende Fehlermeldung:

XML-Verarbeitungsfehler: Undefinierte Entität
Adresse: http://s146058036.online.de/contenido/e ... 00c6da1aaf
Zeile Nr. 31, Spalte 50:

Was mache ich falsch bzw. muss ich ändern?

Eingesetzt wird die Version 4.6.2.
Zuletzt geändert von moltimer am Fr 13. Jan 2006, 23:52, insgesamt 2-mal geändert.
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1

moltimer
Beiträge: 29
Registriert: Di 22. Nov 2005, 16:44
Wohnort: Ahrensburg
Kontaktdaten:

Beitrag von moltimer » Fr 13. Jan 2006, 16:41

Nochmal ich,

ich habe das Problem nun eingegrenzt. Sobald in einem Artikel Umlaute oder Sonderzeichen auftauchen, kommt es im Modul RSS Feed Creator zur obigen Fehlermeldung, un der Feed wird nicht korrekt erstellt.
Ich habe schon einige Foren Einträge bzgl. UTF-8 und IS0 geshen aber nicht verstanden. Ist es ein Browser oder Contenido Problem.

Wäre nett wenn jemand mir nochmal genau den Zusammenhang kurz erläutern könnte und mir die entsprechenden Stellen in Contenido oder im HTML Code zur Änderung posten könnte.

Danke im voraus.


Gruß Moltimer
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1

moltimer
Beiträge: 29
Registriert: Di 22. Nov 2005, 16:44
Wohnort: Ahrensburg
Kontaktdaten:

Beitrag von moltimer » Fr 13. Jan 2006, 23:51

Hallo Community,

ich kann nicht glauben das keiner dazu eine Idee hat.
Könnte es sogar vielleicht ein Bug sein?

Gruß Moltimer
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Sa 14. Jan 2006, 00:34

Da gab es doch schon einen Thread zum RSS-Modul und umlauten. Suche nochmal.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

moltimer
Beiträge: 29
Registriert: Di 22. Nov 2005, 16:44
Wohnort: Ahrensburg
Kontaktdaten:

Beitrag von moltimer » Sa 14. Jan 2006, 23:23

Liebe Community,

im Contenido Forum habe ich nichts diesbezüglich gefunden.
Allerdings im phpcenter Forum
http://www.phpcenter.de/phorum/read.php ... 86&t=48586
Ich weiss nun dass es mit den Umlauten und Entitäten zusammenhängt und es eine Ungereimtheit im RSS Feed Creator Modul aus dem Beispielmandanten aus Version 4.6.2 sein muss. Sobald die Sonderzeichen HTMl konform umschriben werden kommt es zu diesem Fehler. Schreibt man die Sonderzeichen direkt - also ä, ü etc. kommt dieser Fehler nicht. Es müsste also eine str_replace vorgenommen weden der aus z.B ä ein ä macht - oder so ;-).

Nur leider bin ich noch PHP Anfänger und weiss nicht was ich ändern muss. Da wird es doch bestimmt die eine oder andere Funktion für geben.

Wäre nett wenn mir jemand helfen würde.

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname  :      RSS Feed generator
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#Includes
cInclude('classes', 'class.article.php');

#Get settings
$rss_cat = "CMS_VALUE[0]";
$rss_sortby = "CMS_VALUE[1]";
$rss_sortorder = "CMS_VALUE[2]";
$rss_include_start_article = "CMS_VALUE[3]";
$rss_title = "CMS_VALUE[4]";
$rss_link = "CMS_VALUE[5]";
$rss_description = "CMS_VALUE[6]";
$rss_language = "CMS_VALUE[7]";
$rss_copyright = "CMS_VALUE[8]";
$rss_image_title = "CMS_VALUE[9]";
$rss_image_url = "CMS_VALUE[10]";
$rss_image_link = "CMS_VALUE[11]";
$rss_managingEditor = "CMS_VALUE[12]";
$rss_webMaster = "CMS_VALUE[13]";
$rss_maxCount = "CMS_VALUE[14]";
$rss_ttl = "CMS_VALUE[15]";
$rss_description_length = "CMS_VALUE[16]";

#Check settings
if ($rss_maxCount == '') {
	$rss_maxCount = 999;
}

if ($rss_description_length=='') {
	$rss_description_length = 200;
}

#Get feed image
if ($rss_image_link != '') {
	if (substr(strtolower($rss_image_link), 0, 7) != 'http://') {
		$rss_image_link = 'http://'.$rss_image_link;
	}
}

if ($rss_image_url != '') {
	$sql = "SELECT * FROM ".$cfg['tab']['upl']." WHERE idupl = ".$rss_image_url;
	$db->query($sql);
	if ($db->next_record()) {
		$rss_image_url = $cfgClient[$client]['path']['htmlpath'].$cfgClient[$client]['upl']['frontendpath'].$db->f("dirname").$db->f("filename");
		$rss_image_fs = $cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upl']['frontendpath'].$db->f("dirname").$db->f("filename");
	}
}

#Output feed header
header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
";
echo "<rss version=\"2.0\">
";
echo "<channel>
";

echo "<title>".prepareStringForOutput($rss_title)."</title>
";
echo "<copyright>".prepareStringForOutput($rss_copyright)."</copyright>
";
echo "<link>".prepareStringForOutput($rss_link)."</link>
";
echo "<description>".prepareStringForOutput($rss_description)."</description>
";
echo "<language>".prepareStringForOutput($rss_language)."</language>
";
echo "<lastBuildDate>".date('D, d M Y H:i:s T')."</lastBuildDate>
";
echo "<pubDate>".date('D, d M Y H:i:s T')."</pubDate>
";
echo "<generator>Contenido CMS</generator>
";
echo "<managingEditor>".$rss_managingEditor."</managingEditor>
";
echo "<webMaster>".$rss_webMaster."</webMaster>
";
echo "<ttl>".$rss_ttl."</ttl>
";
echo "<image>
";
echo "<title>".prepareStringForOutput($rss_image_title)."</title>
";
list ($width, $height, $type, $attr) = getimagesize($rss_image_fs);
echo "<width>".$width."</width>
";
echo "<height>".$height."</height>
";
echo "<url>".prepareStringForOutput($rss_image_url)."</url>
";
echo "<link>".prepareStringForOutput($rss_image_link)."</link>
";
echo "</image>
";

#Output articles
if ($rss_cat != '') {
	if ($rss_include_start_article != '') {
		$b_include_start_article = true;
	} else {
		$b_include_start_article = false;
	}
	$options = array ('idcat' => $rss_cat, "start" => $b_include_start_article, "order" => $rss_sortby, "direction" => $rss_sortorder);
	$list = new ArticleCollection($options);
	$count = $list->count;

	if ($count > 0) {
		$aArticleList = array ();
		$aArticleList = $list->articles;
		$aTmpArticleList = array ();
		$index = 1;
		foreach ($aArticleList as $value) {
			if ($index <= $rss_maxCount) {
				$tmp_article = new Article($value, $client, $lang);
				$headline = '';
				$i = 1;
				while (($i<20) && (is_empty($headline))) {
					$headline = strip_tags($tmp_article->getContent('CMS_HTMLHEAD', $i));
					$i++;
				}
					
				$i = 1;
				while (($i<20) && (is_empty($headline))) {
					$headline = strip_tags($tmp_article->getContent('CMS_TEXT', $i));
					$i++;
				}
				
				$description = '';
				$i = 1;
				while (($i<20) && (is_empty($description))) {
					$description = strip_tags($tmp_article->getContent('CMS_HTML', $i));
					$i++;
				}

				$description = capiStrTrimAfterWord($description, $rss_description_length);

				$pub_date = $tmp_article->getField("created");
				$pub_date = strtotime($pub_date);
				$pub_date = date('D, d M Y H:i:s T', $pub_date);
				if ($headline != '') {
					$headline = prepareStringForOutput($headline);
					$link = str_replace('&','&',$cfgClient[$client]['path']['htmlpath']."front_content.php?idcat=$rss_cat&idart=$value&client=$client&lang=$lang");
					echo "<item>
";
					echo "<title>".prepareStringForOutput($headline)."</title>
";
					echo "<description>".prepareStringForOutput($description)."</description>
";
					echo "<link>".$link."</link>
";
					echo "<pubDate>".$pub_date."</pubDate>
";
					$t1 = $cfg["tab"]["art_lang"];
					$t2 = $cfg["tab"]["phplib_auth_user_md5"];
					$sql = "SELECT ".$t2.".realname FROM ".$t1." INNER JOIN ".$t2." ON ".$t1.".author = ".$t2.".username WHERE (".$t1.".idart=$value) AND (".$t1.".idlang=$lang)";
					$db->query($sql);
					
					if ($db->next_record()) {
						$author = prepareStringForOutput($db->f("realname"));
					} else {
						$author = '';
					}
					echo "<author>".$author."</author>
";
					echo "</item>
";
				}
			}
			$index ++;
		}
	}
}

echo "</channel>
";
echo "</rss>
";

function is_empty($in_str) {

	$tmp = trim($in_str);
	$tmp = strip_tags($tmp);
	$tmp = str_replace(chr(13).chr(10), '', $tmp);
	$tmp = str_replace('&nbsp;', '', $tmp);

	if ($tmp == '') {
		return true;
	} else {
		return false;
	}
}

function prepareStringForOutput($sIn) {

	$sIn = str_replace('&nbsp;',' ',$sIn);
	$sIn = str_replace('&nbsp;',' ',$sIn);
	#$sIn = str_replace(chr(13).chr(10),' ',$sIn);
	#return htmlspecialchars($sIn, ENT_QUOTES);
	#return htmlnumericalentities(html_entity_decode($sIn));
    return str_replace('&','&',htmlnumericalentities($sIn));
}

function htmlnumericalentities($str) {

	return preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str);
}
?>
Gruß Moltimer
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1

E. Hut
Beiträge: 15
Registriert: Di 14. Mär 2006, 17:58
Kontaktdaten:

Beitrag von E. Hut » Di 14. Mär 2006, 18:07

Was ist aus dem Problem geworden? Ich kämpfe damit auch gerade herum.

Zunächst hat der RSS Feed Creator wunderbar gearbeitet. Als ich dann im TEXT(HTML)-Modul die <p>-Tags entfernt habe, gings plötzlich nicht mehr. Mittlerweile geht es auch nach Einfügen der Tags nicht.

Gut am Entfernen der TEXT-Tags war, daß ich endlich keine doppelten Tags mehr hatte - nur leider eben zu Lasten des RSS Feed Creators.

Hm.

E.

E. Hut
Beiträge: 15
Registriert: Di 14. Mär 2006, 17:58
Kontaktdaten:

Beitrag von E. Hut » Fr 17. Mär 2006, 03:50

Mein aktueller Workaround:

ich gebe den gewünschtne Artikeltext -meist über die HTML-ansicht von tinymce- ein, speichere, bis ich in der editier-ansicht bin. dann lösche ich den ersten umlaut im text (nur den!), tippe ihn in der editier-ansicht nochmal neu ein, speichere und gut ist.

so läuft der feed creator wunderbar.

gute nacht,

e.

cassiopeia
Beiträge: 16
Registriert: Mi 18. Mai 2005, 21:12
Kontaktdaten:

Beitrag von cassiopeia » Do 1. Jun 2006, 15:01

Ich hab's wie folgt in den Griff gekriegt:

Direkt im Modul (RSS Feed Creator, Ausgabe) nach:

Code: Alles auswählen

function prepareStringForOutput($sIn) { 
diese Zeile zusätzlich eingefügt:

Code: Alles auswählen


$sIn = html_entity_decode($sIn);
Nach dieser Änderung kommt keine Fehlermeldung im Firefox mehr - der IE hatte auch vorher kein Problem. Hoffe, es klappt auch bei Euch.

Gruß CP
--> Version 4.6.8
Erfahrung ist eine nützliche Sache.
Leider macht man sie immer erst kurz nachdem man sie brauchte.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen » Fr 3. Nov 2006, 10:32

Super cassiopeia! Das ist die Lösung! :wink:

A199M Support
Beiträge: 94
Registriert: Di 27. Jul 2004, 11:52
Wohnort: Vogtland
Kontaktdaten:

Beitrag von A199M Support » Sa 16. Dez 2006, 13:53

cassiopeia hat geschrieben:Ich hab's wie folgt in den Griff gekriegt:

Direkt im Modul (RSS Feed Creator, Ausgabe) nach ...
Der Tipp hat mir sehr geholfen. :) Besten Dank.
Klaus
Version 4.4.5.r1 - DRK im Vogtland * Version 4.6.15 - Informationsportal - Xpert Business Spezial

ZuMe
Beiträge: 71
Registriert: Sa 20. Dez 2003, 13:36
Kontaktdaten:

Beitrag von ZuMe » Fr 28. Sep 2007, 09:03

Mir auch! Danke cassiopeia. :mrgreen:

Gesperrt