【发布时间】:2016-01-22 11:23:24
【问题描述】:
我有一个从特定网站获取特定链接的函数,它可以工作,但是当我尝试在 while 循环中使用此函数时,问题就开始了。当我尝试这样做时,由于某种原因,链接长度开始增加。
function getLinks($link) {
$link1 = $link;
$content = file_get_contents($link1);
$content = str_replace("<", "", $content);
$content = str_replace(">", "", $content);
preg_match("~previous page.+?next page~i", $content, $match);
preg_match("~\"(/.+?)\"~i", $match[0], $match);
$link2 = "https://en.wiktionary.org".$match[1];
echo $link1."<br>";
echo $link2."<br>";
return $link2;
}
$firstLink = getLinks("https://en.wiktionary.org/w/index.php?title=Category:English_verbs&pagefrom=AUTOPILOT%0Aautopilot#mw-pages");
结果 firstLink = getLinks():
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&pagefrom=AUTOPILOT%0Aautopilot#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&pagefrom=BAGSIE%0Abagsie#mw-pages
^--- 看看它是如何正常工作的?然后当我把它放在一个while循环中时:
$count = 0;
while ($count < 5) {
$count++;
$firstLink = getLinks($firstLink);
}
结果完全一团糟,链接开始相互堆叠,如下所示:
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&pagefrom=AUTOPILOT%0Aautopilot#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&pagefrom=BAGSIE%0Abagsie#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&pagefrom=BAGSIE%0Abagsie#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bpagefrom=BAGSIE%0Abagsie&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bpagefrom=BAGSIE%0Abagsie&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bamp%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bamp%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bamp%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bamp%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
https://en.wiktionary.org/w/index.php?title=Category:English_verbs&%3Bamp%3Bamp%3Bamp%3Bamp%3Bpagefrom=BAGSIE%0Abagsie&%3Bamp%3Bamp%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bamp%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bamp%3Bpagefrom=ACETIFY%0Aacetify&%3Bpagefrom=ACETIFY%0Aacetify&pagefrom=ACETIFY%0Aacetify#mw-pages
这让我发疯了,所以如果有人知道我做错了什么,请告诉我。谢谢。
while 循环中的常规函数:
function addOne($num) {
echo $num."<br>";
$num++;
return $num;
}
$num = 0;
$count = 0;
while ($count < 5) {
$count++;
$num = addOne($num);
}
^---工作得很好
【问题讨论】:
标签: php regex hyperlink while-loop preg-match