Добрый день! Столкнулся со странной проблемой, а именно:
Функция query_to_google
прекрасно работает сама по себе в отдельном документе, но когда я начинаю ее внедрять в основной модуль массив $a
обнуляется сам собой.
Под обнуляется, подразумеваю, что до добавления проблемной строки print_r ($a)
выдает DOMNodeList Object ( [length] => 5 )
После добавления проблемной строки, print_r ($a)
выдает DOMNodeList Object ( [length] => 0 )
До строки где объявляется массив $material_name_array
находится фрагмент кода основного модуля.
Конфликт заключается в том, что после добавления строки
$pExcel = PHPExcel_IOFactory::load($uploadPath);
массив $a
обнуляется и у меня не выполняется вложенный foreach
, который предназначен для обработки ссылки.
Пока этой строки нет, код работает отлично.
Прошу, подскажите с чем это может быть связано? В php неопытен.
require_once 'Classes/PHPExcel.php';
// Каталог, в который мы будем принимать файл:
$uploaddir = 'uploadFile/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
//header( 'Refresh: 0; url=../formsComplete.php' );
}
else {
echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";
// header( 'Refresh: 0; url=../formsError.php' );
}
$uploadPath = 'uploadFile/';
$fileName = $_FILES['uploadfile']['name'];
$uploadPath .= $fileName;
$pExcel = PHPExcel_IOFactory::load($uploadPath);
// выбираем лист, с которым будем работать
$pExcel->setActiveSheetIndex(0);
$aSheet = $pExcel->getActiveSheet(0);
// Цикл по листам Excel-файла
foreach ($pExcel->getWorksheetIterator() as $worksheet) {
// выгружаем данные из объекта в массив
$tables[] = $worksheet->toArray();
}
// тут огромный кусок кода обработки Excel файла
// Результатом его работы будет массив $material_name_array
$material_name_array = array("Муфта+соединительная+GUSJ-12/150-240+(E08773-064)+купить");
function query_to_google($material_name_array) {
foreach ($material_name_array as $query_string) {
libxml_use_internal_errors(true);
$dom = new DomDocument;
$dom->loadHTMLFile("https://www.google.ru/search?q=".$query_string);
$xpath = new DomXPath($dom);
$a = $xpath->query('//*[@id="ires"]/ol/div/h3/a/@href');
print_r ($a);
foreach ($a as $b){
$extract_href = ""; //Переменная в которой будет храниться итоговая обработанная ссылка
$href_buffer = ""; // Буфер для отсечения куска в начале строки
$href_buffer2 = ""; // Буфер для отсечения куска в конце строки
$extract_href = $b->textContent.PHP_EOL;
echo "<br>Необработанная строка: ", $extract_href,"<br>";
$href_buffer = explode("/url?q=", $extract_href);
$href_buffer2 = $href_buffer[1];
$href_buffer2 = explode("&sa=U&ved", $href_buffer2);
$extract_href = $href_buffer2[0];
echo $extract_href;
echo "</br></br>#######################</br>";
}
$freeze_time = rand(3,5);
sleep($freeze_time);
}
}
//~~~~~тело~~~~~
query_to_google ($material_name_array);
Проверьте пути:
$uploaddir = __DIR__.'/uploadFile';
$uploadfile = $uploaddir . "/" . basename($_FILES['uploadfile']['name']);
$uploadPath = __DIR__.'/uploadFile/';
$fileName = $_FILES['uploadfile']['name'];
$uploadPath .= $fileName;
И замените loadHTMLFile на CURL:
$ch = curl_init("https://www.google.ru/search?q=".$query_string);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$cl = curl_exec($ch);
$dom = new DomDocument;
$suc = $dom->loadHTML($cl);
$xpath = new DomXPath($dom);
$a = $xpath->query('//*[@id="ires"]/ol/div/h3/a/@href');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Пытаюсь сделать экспорт данных в xlsx файлСначала сделал экспорт в xls таким образом:
В цикле вывожу все наименования фирм из таблицы companynameХочу внутри этой таблицы вывести сумму полей из таблицы gtable таким образом
Как реализовать функцию добавления товаров в корзину в куки на PHP? Расскажите пожалуйста алгоритм действий