Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我知道如何解析HTML,我正在尝试用php代码替换goto命令_Php_Loops_Web Scraping_Goto - Fatal编程技术网

我知道如何解析HTML,我正在尝试用php代码替换goto命令

我知道如何解析HTML,我正在尝试用php代码替换goto命令,php,loops,web-scraping,goto,Php,Loops,Web Scraping,Goto,我得到了这个代码的各种错误。我试图用其各自的url回应www.forever21.com网站的类别和子类别。因此,屏幕上的输出应为: 类别-子类别1-子类别2-子类别3-url 如果我对“while”命令进行注释,然后去掉“goto”命令,我就可以让它工作了 代码如下: <?php $source = file_get_contents('http://www.forever21.com'); $navigation = strpos($source, '<ul cla

我得到了这个代码的各种错误。我试图用其各自的url回应www.forever21.com网站的类别和子类别。因此,屏幕上的输出应为:

类别-子类别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>";

    }
   }
   }
?>

XD谢谢你,迭戈。。。使用PHP 14年了,我从未见过有人使用
goto
。无论如何。。。这个特殊的任务更适合像和这样的库。看一看,了解所涉及的技术。