PHP простой HTML возвращаемый массив DOM?
Я пытаюсь создать приложение с использованием простого HTML-сценария DOM php, но в настоящее время я работаю с ним - надеюсь, вы поможете.
Цель состоит в том, чтобы прочитать номера продуктов из базы данных mySQL, объединить эти числа с константой URL, а затем проанализировать полученный веб-сайт для определенного класса. Результат должен быть выведен на экран.
Моя проблема в том, что скрипт возвращает только первый результат из массива функций, я пробовал несколько вещей, например, пытался вызвать $ values->children[4], но, похоже, ничего не помогло.
Когда я запускаю функцию get_prices_array() с помощью URL-адреса, он возвращает несколько результатов -> но когда я возвращаю это в цикле while, он возвращает только первый результат в массиве.
Вот мой код, надеюсь, вы можете указать мне в правильном направлении!
Спасибо!
<?php
include('simple_html_dom.php');
function get_prices_array($url) {
$x = file_get_html($url);
foreach ($x->find('span.price')as $dom) {
$y = $dom->outertext;
return $y;
}
$x->clear();
}
$con = mysqli_connect("localhost", "***", "***", "***");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
$result = mysqli_query($con, "SELECT * FROM articles");
while ($row = mysqli_fetch_array($result)) {
$constant = '***';
$prices = get_prices_array($constant . $row["product_number"]);
echo $row["product_number"] . " - " . $prices . '<br />';
}
mysqli_close($con);
?>
// РЕДАКТИРОВАТЬ //
Я изменил функцию get_prices_array(), чтобы перебрать каждый класс цен диапазона и добавить результат в массив, после чего массив возвращается из функции. Первые 5 результатов из массива затем сохраняются в переменные и добавляются в возвращаемую строку. Спасибо за вашу помощь!
<?php
include('simple_html_dom.php');
function get_prices_array($url) {
$x = file_get_html($url);
$y = array();
foreach ($x->find('span.price')as $dom) {
$x = ($dom->outertext);
$y[] = $x;
}
return $y;
//$x->clear();
}
$con = mysqli_connect("localhost", "***", "***", "***");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
$result = mysqli_query($con, "SELECT * FROM articles");
while ($row = mysqli_fetch_array($result)) {
$constant = '***';
$prices = get_prices_array($constant . $row["product_number"]);
$pos1 = $prices[0];
$pos2 = $prices[1];
$pos3 = $prices[2];
$pos4 = $prices[3];
$pos5 = $prices[4];
echo $row["product_number"] . " - " . $pos1 . " - " . $pos2 . " - " . $pos3 . " - " . $pos4 . " - " . $pos5 .'<br />';
}
mysqli_close($con);
?>
1 ответ
Я думаю, что проблема из-за возврата, используемого в цикле foreach функции get_prices_array($url).
он выполняет цикл foreach только один раз. Цикл не имеет смысла, если вы возвращаетесь без условия внутри цикла.