1

いくつかの文字列を並べ替えてリンクと一致させる必要があります。これが私が行うことです:

$name_link = $dom->find('div[class=link] strong');

NowDownload.eu などの文字列を含む配列 [0]-[5] を返します

$code_link = $dom->find('div[class=link] code');

リンク [0] は名前 [0] に属しているように、0 ~ 5 の名前に一致するリンクを返します。

それらが返される順序はわかりませんが、NowDownload.Eu は $code_link[4] または $code_link [3] の可能性がありますが、名前の配列は順番に一致します。

今、私は $code_link[4] が必要です // その NowDownload.Eu が毎回 $link1 になるとしましょう

だから私はこれをします

$i = 0;

while (!empty($code_link[$i]))

   SortLinks($name_link, $code_link, $i);  // pass all links and names to function, and counter
   $i++;
}

function SortLinks($name_link, $code_link, &$i) { // counter is passed by reference since it has to increase after the function

   $string = $name_link[$i]->plaintext; // name_link is saved as string
   $string = serialize($string); // They are returned in a odd format, not searcheble unless i serialize

   if (strpos($string, 'NowDownload.eu')) { // if string contains NowDownload.eu

       $link1 = $code_link[$i]->plaintext; 
       $link1 = html_entity_decode($link1); 
       return $link1; // return link1
   }

   elseif (strpos($string, 'Fileswap')) {

       $link2 = $code_link[$i]->plaintext; 
       $link2 = html_entity_decode($link2);
       return $link2;
   }

   elseif (strpos($string, 'Mirrorcreator')) {

       $link3 = $code_link[$i]->plaintext;
       $link3 = html_entity_decode($link3);
       return $link3;
   }

   elseif (strpos($string, 'Uploaded')) {

       $link4 = $code_link[$i]->plaintext;
       $link4 = html_entity_decode($link4);
       return $link4;
   }

   elseif (strpos($string, 'Ziddu')) {

       $link5 = $code_link[$i]->plaintext;
       $link5 = html_entity_decode($link5);
       return $link5;
   }

   elseif (strpos($string, 'ZippyShare')) {

       $link6 = $code_link[$i]->plaintext;
       $link6 = html_entity_decode($link6);
       return $link6;
   }
}


echo $link1 . '<br>';
echo $link2 . '<br>';
echo $link3 . '<br>';
echo $link4 . '<br>';
echo $link5 . '<br>';
echo $link6 . '<br>';
die();

リンクが見つかったことは知っていますが、以前にテストしたことがありますが、関数にしたかったのですが、めちゃくちゃになりました。ロジックに問題があるのでしょうか、それとも変数/ararysを渡す方法に問題がありますか?

4

1 に答える 1

0

$i読むためだけに使用するため、参照として渡す理由がわかりません。名前付きリンクを含む配列を返し、次のように使用できます。

$all_links = SortLinks($name_link,$code_link);
echo $all_links['link1'].'<br/>';
echo $all_links['link2'].'<br/>';

ループを関数の外側ではなく、関数の内側に配置する必要があります。

于 2013-03-17T17:51:31.360 に答える