我需要对一些字符串进行排序并将它们与链接匹配,这就是我所做的:
$name_link = $dom->find('div[class=link] strong');
返回包含NowDownload.eu
等字符串的数组[0] - [5]$code_link = $dom->find('div[class=link] code');
返回与0-5中的名称匹配的链接,如链接[0]属于名称[0]
我不知道它们的返回顺序,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的方式有问题?
答案 0 :(得分:0)
我不知道为什么你传递$i
作为参考,因为你只是用来阅读它。你可以返回一个包含命名链接的数组,并像这样使用它:
$all_links = SortLinks($name_link,$code_link);
echo $all_links['link1'].'<br/>';
echo $all_links['link2'].'<br/>';
你必须把你的循环放在函数内,而不是在外面。