有人可以帮助我获取页面代码吗?我使用的代码是:
<?php
$v='bla bla';
$j=2;
$x='';
$h=str_replace($x,$v,"http://www.youtube.com/watch?v=$x&list=blabla&index=$j++&feature=plpp_video");
$html = file_get_contents($h);
echo $html;
?>
wamp正在抛出类似
的错误Warning: file_get_contents(http://www.youtube.com/watch?v=&list=blabla&index=2&feature=plpp_video)
[function.file-get-contents]: failed to open stream:
HTTP request failed! HTTP/1.0 404 Not Found in C:\wamp\www\php trails\trails\new 8.php on line 6
如果x未声明为null,则表示:
Notice: Undefined variable: x in C:\wamp\www\php trails\trails\new 8.php on line 5
答案 0 :(得分:2)
http://www.youtube.com/watch? v =&amp; list = blabla&amp; index = 2&amp; feature = plpp_video无效网址
我想你想要那样的东西
$v='bla_bla';
$j=2;
$h = "http://www.youtube.com/watch?v=".$v."&list=blabla&index=".($j++)."&feature=plpp_video";
$html = file_get_contents($h);
echo $html;
编辑:从字符串中排除$ v以突出显示更改
答案 1 :(得分:2)
当您加入一些字符串时,无需替换字符串。 您可以将变量{var}直接写入字符串。 确保你的vars是url编码的。
<?php
$v='bla bla';
$j=2;
$x='';
$h="http://www.youtube.com/watch?v={$x}&list=blabla&index={$j}++&feature=plpp_video");
$html = file_get_contents($h);
echo $html;
?>
答案 2 :(得分:0)
您误解了str_replace()
和strings在PHP中的常规工作方式。
试试这个:
<?php
$v = 'bla bla';
$j = 2;
$urlTemplate = 'http://www.youtube.com/watch?v=%x%&list=blabla&index=%j%&feature=plpp_video';
$h = str_replace(array('%x%','%j%'), array($v,$j++), $urlTemplate);
echo file_get_contents($h);
当您将变量放在字符串中时,会在分析字符串时对其进行求值 - 在分配时。您所做的工作将无效,因为该字符串将评估为http://www.youtube.com/watch?v=&list=blabla&index=2++&feature=plpp_video
。
字符串中的变量不会创建对变量的引用,它们只是使用当前值。
上面的代码使用占位符%x%
和%j%
,并将其替换为您要使用的实际值。
答案 3 :(得分:0)
我发现不需要在网址中操纵值,每个视频都带有唯一的ID,因此无需担心增加/更改索引值或播放列表值