Я получаю все виды ошибок с этим кодом. Я пытаюсь повторить категорию и подкатегории веб-сайта www.forever21.com с соответствующим URL. Таким образом, вывод на экран должен быть:
Категория — Подкатегория1 — Подкатегория2 — Подкатегория3 — URL
Я как бы заставляю его работать, если я комментирую команды while и убираю команду goto.
Вот код:
<?php
$source = file_get_contents('http://www.forever21.com');
$navigation = strpos($source, '<ul class="navigation">');
$navigation_end = strpos($source, '</ul>', $navigation);
$find_li_end = $navigation;
while ($href < $navigation_end) {
$find_li = strpos($source, '<li>', $find_li_end);
$find_li_end = strpos($source, '</li>', $find_li);
$cat_begin = strpos($source, 'class="dropdown-toggle">', $find_li);
$cat_end = strpos($source, '</a>', $cat_begin);
$category = substr($source, $cat_begin + 24, $cat_end - $cat_begin - 24);
$title = $cat_end;
$href_end = $cat_end;
while ($href < $find_li_end) {
again:
$href = strpos($source, 'href="', $href_end);
$href_end = strpos($source, '"', $href + 6);
if ($title === false) {
$title = $navigation_end;
}
Else {
$title = strpos($source, 'class="title"', $title);
}
if ($href > $title) {
$subcat1_begin = strpos($source, '">', $title + 14);
$subcat1_end = strpos($source, '<span', $subcat1_begin);
$subcat1 = substr($source, $subcat1_begin + 2, $subcat1_end - $subcat1_begin - 2);
$href_end = $subcat1_end;
goto again;
}
$cat_url = substr($source, $href + 6, $href_end - $href - 6);
if (strlen($cat_url) > 4) {
echo ucwords(strtolower($category));
echo " - ";
echo ucwords(strtolower($subcat1));
echo " - ";
echo ucwords(strtolower($subcat2));
echo " - ";
echo ucwords(strtolower($subcat3));
echo " - ";
echo $cat_url;
echo "<br>";
}
}
}
?>
Задача ещё не решена.
Других решений пока нет …