file_get_contents没有';如果URL是文本文件中的一行,则不起作用


file_get_contents doesn't work if the URL is a line from a text file

嘿,我是PHP新手,所以这可能是一个明显的错误。目前,我正在尝试从元批评中读取游戏的分数,并将其显示给用户。这是我用来做这件事的代码:

$linkToGame= 'METACRITIC LINK';
$opts = array('http' => array('header' => "User-Agent:MyAgent/1.0'r'n"));
$context = stream_context_create($opts);
$url = file_get_contents($linktoGame, FALSE, $context);
$first_step = explode( '<span itemprop="ratingValue">' , $url );
$second_step = explode("</span>" , $first_step[1] );
echo $second_step[0];

这正是它想要做的,即从元批评url输出游戏评级。我现在要做的是让它使用一个文本文件中的链接,该文件包含115个元批评链接的列表。

我用这个来阅读文本文件。

$lines = file('metacriticlinks.txt');

然后将CCD_ 1切换到

$linkToGame = $lines[1];

然而,通过这样做,我得到了以下错误:

"警告:文件集内容(http://www.metacritic.com/game/3ds/steamworld-heist):无法打开流:HTTP请求失败!HTTP/1.0 404未找到在C:''examplep''htdocs''learn''getwebcontent.php的第19行"

奇怪的是,如果我用警告中显示的确切URL替换$linkToGame,代码会完美运行并显示该游戏的分数。我尝试将每一行读取到一个数组中,并使用数组中的一个项,但这也不起作用,并产生了相同的警告。

这个问题最奇怪的部分是,如果我使用文本文件或数组(115)中的最后一行,代码就会正常工作。除了最后一行外,其他行都不起作用。可能是什么问题?

非常感谢。

由于file()的工作方式,我认为除了最后一个文件名之外,所有文件名都附加了一个换行符。

来自file():上的php.net网站

"返回数组中的文件。数组中的每个元素都对应于文件中的一行,换行符仍附加在中。"

http://php.net/manual/en/function.file.php

对您的问题和代码行为的精彩描述!

正如Daniel所指出的,您可以使用trim()函数来删除它:http://www.w3schools.com/php/func_string_trim.asp

输出中似乎有一个额外的空白。您有:

"http://www.metacritic.com/game/3ds/steamworld-heist [WHITESPACE]"

而不是:

"http://www.metacritic.com/game/3ds/steamworld-heist"。

请尝试使用trim($lines[1]),这样可以去掉任何前面或后面的空白。