嘿,我是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])
,这样可以去掉任何前面或后面的空白。