получить динамическую переменную, встроенную в строку URL-адреса HTML и получить ее HTML-код - PullRequest
1 голос
/ 20 января 2012

Может кто-нибудь помочь мне получить код страницы? Код, который я использовал, был:

<?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 не объявлен равным нулю, он говорит:

Notice: Undefined variable: x in C:\wamp\www\php trails\trails\new 8.php on line 5

Ответы [ 4 ]

2 голосов
/ 20 января 2012

http://www.youtube.com/watch? v = & list = blabla & index = 2 & feature = 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;

edit: исключено $ v из строки, чтобы выделить изменение

2 голосов
/ 20 января 2012

Нет необходимости заменять строки, когда вы просто соединяете некоторые строки. Вы можете записать переменные как {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 голосов
/ 21 января 2012

я обнаружил, что нет необходимости манипулировать значениями в URL, каждое видео имеет уникальный идентификатор, поэтому не нужно беспокоиться об увеличении / изменении значения индекса или значения списка воспроизведения

0 голосов
/ 20 января 2012

Вы неправильно понимаете, как str_replace() и строки в целом работают в 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% и заменяет их фактическими значениями, которые вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...