Folgendes Problemchen:
die ganze Seite im phpwcms ist bei mir in utf-8 kodiert. Jetzt versuche ich gerade ein Nachrichten-Kontentpart zu erstellen, wo ein XML-Feed in HTML übersetzt und auf der Seite platziert wird. Alles klappt, bis auf eine Sache:
Die .php-Datei, wo xml-html-Wandlung stattfindet ist mit win1251 kodiert - xml-Feed kommt auf Russisch. Beim Öffnen der Datei im Browser sieht alles super aus - Browser erkennt die Kodierung. Beim Einfügen der .php-Datei per Replacement Tag gibt es Konflikt - Browser erkennt die utf-8 (wie in der ganzen Seite), und macht das Teil in win1251 unlesbar.
Wenn man per Hand im Browser auf win1251 schaltet - so wird dann nur dieses Contentpart lesbar, alles andere aber nicht:)
Wenn man aber in der .php-Datei die Kodierung auf utf-8 stellt, so bleibt sie auch beim Abruf aus Browser unlesbar.
Eure Ratschläge sind dringend erwünscht:)
da ist die php-datei:
Code: Select all
<?php /*
/*function select_box($array, $selected, $name) {
// This is selectbox-function
$out = "<select name=\"$name\">";
foreach ($array as $key => $value) $out .= sprintf("<option value=\"$key\"%s>$value</option>\n", $key == $selected ? ' selected' : '');
return $out."</select>";
}
*/
/*
* This is the dataarray containing the URLs and Names of the
* feeds to fetch. The URL goes as key.
*/
$backends2 = array(
"http://partner.dwelle.de/syndication/buffered/rss-feeds.510.rdf" => "ru",
);
if (!$backend2) {
// If no backend is chosen, chose a random
srand((float) microtime() * 10000000);
$backend2 = array_rand($backends2);
}
// print "<h1>".$backends[$backend]."</h1>";
// The form containing the selectbox
// print "<form action='$PHP_SELF' method='POST'>";
// print select_box($backends, $backend, "backend");
// print " <input type='submit'>";
// print "</form>";
// Some vars used later on
$insideitem = false;
$tag = "";
$title = "";
$date = "";
$description = "";
$link = "";
$catagory = "";
function startElement2($parser, $tagName, $attrs) {
// The function used when an element is encountered
global $insideitem, $tag;
if ($insideitem) {
$tag = $tagName;
} elseif ($tagName == "ITEM") {
$insideitem = true;
}
}
function characterData2($parser, $data) {
// The function used to parse all other data than tags
global $insideitem, $tag, $title, $date, $description, $link, $catagory;
if ($insideitem) {
switch ($tag) {
case "TITLE":
$title .= $data;
break;
case "DESCRIPTION":
$description .= $data;
break;
case "LINK":
$link .= $data;
break;
case "CATAGORY":
$catagory .= $data;
break;
case "DC:DATE":
$date .= $data;
break;
}
}
}
function endElement2($parser, $tagName) {
// This function is used when an end-tag is encountered.
global $insideitem, $tag, $title, $date, $description, $link, $catagory;
if ($tagName == "ITEM") {
//print_r($date);
printf("<b><a href='%s' target='_blank'>%s</a></b><br>",
trim($link),htmlspecialchars(trim($title)));
printf("%s<br>",htmlspecialchars(trim($date)));
printf("%s<br><br>",htmlspecialchars(trim($description)));
$title = $date = $description = $link = $insideitem = $catagory = false;
}
}
// Now to the parsing itself. Starts by creating it:
$xml_parser = xml_parser_create();
// Then setup the handlers:
// CHange the Functions to match the new ones above
xml_set_element_handler($xml_parser, "startElement2", "endElement2");
xml_set_character_data_handler($xml_parser, "characterData2");
// Open the actual datafile:
$fp = fopen($backend2, r);
// Run through it line by line and parse:
while ($data = fread($fp, 4096)) {
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
// Close the datafile
fclose($fp);
// Free any memmory used
xml_parser_free($xml_parser);
?>