Есть PHP парсер на библиотеке DiDOM. Настроен был на одном тестовом сервере, работал. Сейчас перенесен на другом, и там почему то не парсит значение с кириллицей.
Теряюсь в догадках, почему такое происходит. Интересно было бы услышать подсказку, в сторону каких настроек смотреть. Подозреваю, что php, но что конкретно?...
<?php
$start = microtime(true);
require_once('vendor/autoload.php');
use DiDom\Document;
$document = new Document('http://donor.ru/catalog/tovar/', true);
// H1
$main_heading = $document->find('.c_name')[0]->text();
// Текущая дата
$date_res = date("mdYHis");
// Фото
$foto = $document->find('.gallerylayer img::attr(src)')[0];
$foto_full = ("https://donor.ru$foto");
$foto_name = "id1$date_res.jpg";
copy ( $foto_full, "/fotodir/$foto_name" );
// Цена
$price = $document->find('.c_price')[0];
$price_result = preg_replace('/[^\d]+/', '', $price);
// Бренд
$brand = $document->find('.item_info_section')[0]->first('dl')->xpath('//dt//strong')[0]->text();
// Состав в % для вывода
$sostav = $document->find('.c_mix')[0]->text();
// Состав без % для фильтра
$sostav_noperc = preg_replace(['~[^\pL\s,]+~us', '~-~'], ['', ' '], $sostav);
// Длина
$dlina = $document->find('.item_info_section')[0]->first('dl')->xpath('//dt')[3]->text();
$dlina_result = preg_replace('/[^\d]+/', '', $dlina);
// Вес
$ves = $document->find('.item_info_section')[0]->first('dl')->xpath('//dt')[4]->text();
$ves_result = preg_replace('/[^\d]+/', '', $ves);
// Страна
$country = $document->find('.item_info_section')[0]->first('dl')->xpath('//dt//strong')[5]->text();
UPD
Заметил, что такое происходит с сайтами, у которых доктайп "-//W3C//DTD XHTML 1.0 Transitional//EN". Один ресурс, у которого !DOCTYPE html и html lang="ru" - данные в кириллице получает корректно
В общем, дело было в кодировке страниц донора. Решением стало подключение третьего параметра в парсинг 'windows-1251':
$document = new Document('http://donor.ru/catalog/tovar/', true, 'windows-1251');
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно что бы работали шорткоды в дополнительных поляхИспользую хук с официального сайта
Как заменить прозрачный фон КАРТИНКИ на белый средствами PHP?
Есть настроенный веб-сервер с php, mysqlЧерез браузер все работает хорошо, решил запустить php скрипт из командной строки, чтобы потом сделать...