posted by aqshakirzhan on June 4, 2017

Возникла задача по переносу новостей и страниц с сайта развернутого на ucoz.

Первым делом необходимо в разделе "Резервное копирование проекта" создать, если еще не существует, резервную копию (лучше бд и файлы) и скачать ее.

В моем случае требуемые файлы лежали в папке _s1 : news.txt, site.txt

После этого запустил следующий скрипт, который сохраняет извлекаемые данные в таблицы. предварительно, конечно, требуется их создать.

$link = mysqli_connect('localhost', 'root', '', 'yar-cbs')
    or die('Не удалось соединиться: ' . mysqli_error($link));
$filename = "news.txt"; $tablename = 'news_text';

$text = file_get_contents ($_SERVER['DOCUMENT_ROOT'] . "/_upload/_s1/" . $filename);

$text = preg_replace("/([^\\\])\n/","$1!----end----!",$text);

$array = explode("!----end----!", $text);
    
     mysqli_query($link, "TRUNCATE TABLE $tablename");
foreach($array as $row) {
    $result = [];
    $res = explode("|", $row);
    if (empty($res[0])) {
        continue;
    }
    $result['id'] = $res[0];
    $result['date_create'] = $res[2] . "." . str_pad($res[3], 2, '0', STR_PAD_LEFT) . "." . str_pad($res[4], 2, '0', STR_PAD_LEFT);
    $result['date_stamp'] = $res[8];
    $result['title'] = $res[11];
    $result['text'] = preg_replace("/\\\/","",$res[13]);
    $result['counter'] = $res[16];
    $result['code'] = $res[28];
    $result['update_stamp'] = $res[29];

    $query = "INSERT INTO $tablename SET ";
    $fields = [];
    foreach ($result as $key => $value) {
        $fields[] = "`$key` = '" . addslashes($value) . "'";
    }

    mysqli_query($link, $query . implode(",", $fields));
    

}

$filename = "site.txt"; $tablename = 'site_text';
$text = file_get_contents ($_SERVER['DOCUMENT_ROOT'] . "/_upload/_s1/" . $filename);
$text = preg_replace("/([^\\\])\n/","$1!----end----!",$text);

$array = explode("!----end----!", $text);
    
     mysqli_query($link, "TRUNCATE TABLE $tablename");
foreach($array as $row) {
    $res = explode("|", $row);
    if (empty($res[0])) {
        continue;
    }
    $result = [];
    $result['id'] = $res[0];
    $result['date_stamp'] = $res[7];
    $result['title'] = $res[4];
    $result['text'] = preg_replace("/\\\/","",$res[6]);
    $result['code'] = $res[9];

    $query = "INSERT INTO $tablename SET ";
    $fields = [];
    foreach ($result as $key => $value) {
        $fields[] = "`$key` = '" . addslashes($value) . "'";
    }
    mysqli_query($link, $query . implode(",", $fields))or die('Ошибка: ' . mysqli_error($link));
    
}

mysqli_close($link);
?>

Leave a Comment

Fields with * are required.