获取动态变量嵌入到html url的字符串中并获取它的html代码

时间:2012-01-20 14:14:44

标签: php html youtube

有人可以帮助我获取页面代码吗?我使用的代码是:

<?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

4 个答案:

答案 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,因此无需担心增加/更改索引值或播放列表值