2012-01-20 20 views
1

有人可以帮我获取页面的代码吗?我使用的代码是:获取嵌入到html网址字符串中的动态变量并获取它的html代码

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

你是误解如何str_replace()和一般在PHP中使用strings

试试这个:

<?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%并将它们替换为您要使用的实际值。

+0

感谢老板,但与你提出的改变,我做了一些事情,但我的主要目标是通过我得到的代码来提取每个视频的标题和描述,其中我提供的URL是包含播放列表pf所有视频的页面 – krishna

2

http://www.youtube.com/watchV = &列表=布拉布拉&指数= 2 &功能= plpp_video没有有效的URL

我想你想这样的事情

$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从字符串突出的变化

+0

感谢老板,但随着你所提出的改变,我完成了一些工作,但我的主要目标是通过我得到的代码提取每个视频的标题和描述,其中我提供的URL是包含所有视频播放列表的页面 – krishna

2

当你只是加入一些字符串时,不需要替换字符串。 您可以将变量直接写入{var}到您的字符串中。 确保你的变量被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; 
?> 
0

我发现,没有必要在url操纵值,每个视频携带唯一id所以无需理会递增/改变的索引值或播放列表值

相关问题