1

Тема: PHP. Импорт комментариев из XML бэкапа Wordpress на форум vbulletin.

Есть XML файл бэкапа блога на Wordpress. В нем один пост с тысячьб комментариев.
Хочу его залить на форум vbulletin 3.7.

Вот пример, что есть в XML файле:

<item>
<title>Новости</title>
<link>pravo.ru/?p=723</link>
<wp:post_type>post</wp:post_type>
<wp:comment>
<wp:comment_id>682</wp:comment_id>
<wp:comment_content><![CDATA[НАДО СПАРСИТЬ!!!!]]></wp:comment_content>
</wp:comment>
<wp:comment>
<wp:comment_id>682</wp:comment_id>
<wp:comment_content><![CDATA[ТОЖЕ НАДО СПАРСИТЬ!!!!]]></wp:comment_content>
</wp:comment>

А вот основная часть кода скрипта:

$nm = "Гость";
$userid = "0";
$parentid="0"; // родительский раздел.
$mytime = date( "U" ) - 9000000; // дней 30 назад

$xmlx = $xml->channel->item;
$xmly = $xmlx->xpath("wp:comment");

foreach ($xmly as $value){
$title ="";
$mypost = $value->xpath("wp:comment_content"); 
$mypost = $mypost[0];
$myid = $value->children('wp', true)->comment_id;

$result = mysql_query("INSERT INTO post  
(postid, threadid, parentid, username, userid, title, dateline, pagetext, visible) 
VALUES 
('$idpost', '$threadid', '$parentid', '$nm','$userid', '$title', '$mytime', '$mypost', '1')")
or die("Invalid query: " . mysql_error());
$mytime = $mytime  + rand(300, 700);
echo "<br>id:". $myid  ." текст: ".  $mypost ."<br><br><br>";

$idpost = $idpost +1;
$mytime = $mytime  + rand(10, 20);
}

Поделиться

2

Re: PHP. Импорт комментариев из XML бэкапа Wordpress на форум vbulletin.

Вариант на основе регулярных выражений:

$SUPER = array();
 
echo "<br>Чтение XML контента из файла бэкапа Wordpress<br><br>";
$xml = file_get_contents('wordpress.2015-04-28.xml');
 
preg_match_all('#<wp:comment>(.*?)</wp:comment>#si', $xml, $mtchd1);
foreach($mtchd1[0] as $microdata){
       
       
        preg_match('#<wp:comment_content><!\[CDATA\[(.*?)\]\]></wp:comment_content>#si', $microdata, $mtch);
        preg_match('#<wp:comment_id>(.*?)</wp:comment_id>#si', $microdata, $mtchID);
        $SUPER[] = 'ID => '.$mtchID[1].' TEXT => '.$mtch[1];
       
 
}
var_dump($SUPER);

Поделиться