Hi Phpler
ich habe hier ein Script welches aus einem RSS-Feed (Kino-News) daten ausliest und diese in eine Datenbank einträgt und dann ein Thread in einen Forum erstellt.
Folgendes Problem.
Das Script holt die Daten und trägt sie OHNE Umluatfehler in die Datenbank ein.
Im Thread sieht das ganze so aus:
PHP-Code:
[Fri, 13 Mar 2009 04:00:00] » Shopaholic - Die Schn?chenj?rin
Bezaubernde, spritzige Komödie mit einem neuen Traumpaar in Gestalt von Isla Fisher und Hugh Dancy....
In der Datenbank so:
Code:
Shopaholic - Die Schnäppchenjägerin
Wie mann sieht ist nur der "title" mit Umlautproblemen befallen, der rest nicht!
Hier mal das ganze Script:
PHP-Code:
<?PHP
/*
* (C) 2006 e-WebWork
* http://www.e-webwork.de
* kboehme@e-webwork.de
*/
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("global.php");
print '*** ['.date("d.m.Y H:i").'] Starting script...';
print "\n";
print '*** ['.date("d.m.Y H:i").'] UID->'.$uid.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] UNAME->'.$uname.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] BOARDID->'.$boardid.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] SITESCONT->'.count(sites).'';
print "\n";
$time = time();
for($s = 0;$s < count($sites); $s++){
preg_match("/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si", $sites[$s], $input[1]);
$urlsplit = split("/",$input[1][3]);
print '*** ['.date("d.m.Y H:i").'] sites['.$s.'] = '.$urlsplit[0].'';
print "\n";
$content = implode("",file($sites[$s]));
preg_match_all("/\<item\>(.*?)\<\/item\>/si", $content, $results);
for($i = 0;$i < count($results[1]);$i++) {
preg_match("/\<link\>(.*?)\<\/link\>/si", $results[1][$i], $link);
preg_match("/\<title\>(.*?)\<\/title\>/si", $results[1][$i], $title);
preg_match("/\<description\>(.*?)\<\/description\>/si", $results[1][$i], $desc);
preg_match("/\<pubDate\>(.*?)\<\/pubDate\>/si", $results[1][$i], $date);
$link = $link[1];
$title = $title[1];
$desc = $desc[1];
$date = $date[1];
$check = $db->query("SELECT id,title FROM bb".$n."_rss WHERE title = '".addslashes($title)."'");
if($db->num_rows($check) == 0){
$db->query("INSERT INTO `bb".$n."_rss` ( `id` , `from` , `title` , `link` , `description` ) VALUES ('', '".$s."', '".addslashes($title)."', '".addslashes($link)."', '".addslashes($desc)."')");
if(!empty($date)) $news[$s][$i]['date'] = substr($date,0,strlen($date)-6);
$news[$s][$i]['link'] = $link;
$news[$s][$i]['title'] = $title;
$news[$s][$i]['desc'] = $desc;
if(!$news[$s]['name']) $news[$s]['name'] = $urlsplit[0];
print '*** ['.date("d.m.Y H:i").'] DB->INERSRT('.$title.')';
print "\n";
} else {
print '*** ['.date("d.m.Y H:i").'] DB->EXISTS('.$title.')';
print "\n";
}
}
}
for($i = 0;$i < count($news);$i++){
$newstopic[$i] = "".$news[$i]['name']." - News [".date("d.m.Y H:i")."]";
for($a = 0;$a < count($news[$i]);$a++){
if(!empty($news[$i][$a]['date'])) $newstext[$i] .= "[".$news[$i][$a]['date']."] [b]» [url=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/url][/b]<br />";
else if(!empty($news[$i][$a]['title'])) $newstext[$i] .= "[b]» [url=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/url][/b]<br />";
if(!empty($news[$i][$a]['desc'])) $newstext[$i] .= "[i]".utf8_decode(htmlentities($news[$i][$a]['desc']))."[/i]<br /><br />";
}
$newstext[$i] .= "<br />[i]Quelle: [url=http://".utf8_decode($news[$i]['name'])."]".utf8_decode($news[$i]['name'])."[/url][/i]<br /><br />";
}
for($i = 0;$i < count($newstext);$i++){
$db->query("INSERT INTO bb".$n."_threads (boardid,topic,iconid,starttime,starterid,starter,lastposttime,lastposterid,lastposter,closed,attachments,pollid,important,visible) VALUES ('".$boardid."','".addslashes($newstopic[$i])."','3','".$time."','".$uid."','".addslashes($uname)."','".$time."','".$uid."','".addslashes($uname)."','".$rss_status."','0','0','0','1')");
$threadid = $db->insert_id();
print '*** ['.date("d.m.Y H:i").'] DB->CREATE_THRED('.$threadid.'->'.$newstopic[$i].')';
print "\n";
$db->unbuffered_query("UPDATE bb".$n."_stats SET threadcount=threadcount+1", 1);
print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_GLOBAL_THREADCOUNT';
print "\n";
$db->query("INSERT INTO bb".$n."_posts (parentpostid,threadid,userid,username,iconid,posttopic,posttime,message,attachments,allowsmilies,allowhtml,allowbbcode,allowimages,showsignature,ipaddress,visible) VALUES "."('0','".$threadid."','".$uid."','".addslashes($uname)."','3','".addslashes($newstopic[$i])."','".$time."','".addslashes($newstext[$i])."','0','1','1','1','1','0','127.0.0.1','1')");
$postid = $db->insert_id();
print '*** ['.date("d.m.Y H:i").'] DB->CREATE_POST('.$threadid.'->'.$postid.')';
print "\n";
$db->unbuffered_query("UPDATE bb".$n."_stats SET postcount=postcount+1", 1);
print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_GLOBAL_POSTCOUNT';
print "\n";
$db->unbuffered_query("UPDATE bb".$n."_boards SET threadcount=threadcount+1, postcount=postcount+1, lastthreadid='".$threadid."', lastposttime='".$time."', lastposterid='".$uid."', lastposter='".addslashes($uname)."' WHERE boardid IN (".$boardid.")", 1);
print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_BOARD('.$boardid.')';
print "\n";
}
?>
ich denke der Wichtige schnipsel ist dieser:
PHP-Code:
if(!empty($news[$i][$a]['date'])) $newstext[$i] .= "[".$news[$i][$a]['date']."] [b]» [url=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/url][/b]<br />";
else if(!empty($news[$i][$a]['title'])) $newstext[$i] .= "[b]» [url=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/url][/b]<br />";
ich habe echt keine ahnung was ich da machen soll, denn die discription ist ja mit umlauten blos die überschrift nicht.
Die Datenbank ist auf utf8_general_ci gestellt.
Würde mich über Hilfe freuden!