Тема: PHP. Импорт постов из бэкапа Wordpress на форум vbulletin.
Нужно было перенести бэкап сообщений без комментариев с блога на Wordpress (3 версии) на форум на движке vbulletin 3.7+.
С вордпресса скачал бэкап, залил его по фтп в папочку скрипта на PHP.
Импортировал с помощью simplexml весь бэкап в $xml
Кстати, была проблема с кодировками, т.к. бэкап водрпресса на UTF-8, а таблицы vbulletin в Windows-1251 кодировке.
<html>
<head>
<title>Конвертер</title>
</head>
<body>
<?php
echo "<br>Чтение XML контента из файла бэкапа Wordpress<br><br>";
$xml = simplexml_load_file('wordpress.2015-03-20.xml');
$file_ini = file("boris2.ini");
$host="localhost";
$user=trim($file_ini[0]);
$pwd=trim($file_ini[1]);
$database_name=trim($file_ini[2]);
$db=mysql_connect($host,$user,$pwd);
echo "<br> {$database_name} - {$user} - {$pwd} <br>";
mysql_select_db($database_name,$db);
mysql_query("SET character_set_client='utf8'");
mysql_query("SET character_set_connection='cp1251'");
mysql_query("SET character_set_results='cp1251'");
// найти последнюю тему
$maxthread = mysql_fetch_array(mysql_query("SELECT MAX(threadid) FROM thread"));
$threadid=$maxthread[0];
echo "<br>последняя тема:" . $threadid . "<br>";
//найти последний пост
$maxpost = mysql_fetch_array(mysql_query("SELECT MAX(postid) FROM post"));
$idpost=$maxpost[0];
echo "<br>последний пост:" . $idpost . "<br>";
$idpost = $idpost +1;
$mytime = date( "U" ); // месяц назад ?
$nm = "admin";
$userid = "1";
$parentid="0"; // родительский раздел.
foreach ($xml->channel->item as $value){
$title = $value->title; // в заголовок поста назв. темы
$maspost = $value->children('content', true)->encoded;
$rep = array("<p>", "</p>", "<!--more-->");
$maspost = str_replace ($rep, "", $maspost);
$result = mysql_query("INSERT INTO post
(postid, threadid, parentid, username, userid, title, dateline, pagetext, visible)
VALUES
('$idpost', '$threadid', '$parentid', '$nm','$userid', '$title', '$mytime', '$maspost', '1')")
or die("Invalid query: " . mysql_error());
echo "idpost:". $idpost." title: ". $title ." текст: ". $maspost ."<br><br><br>";
$idpost = $idpost +1;
$mytime = $mytime + rand(10, 20);
}
echo "<br>Конец! ";
?>
</body>
</html>