2010-12-16 2 views
0

Привет Я использую preg_match, чтобы соответствовать шаблону из строки и разобрать их дальше .. Но это не возвращает значение ..preg_match не возвращает никакого значения?

На самом деле я использую, что для извлечения видео, посмотрев после информации заголовка ,

$url = "http://www.youtube.com/watch?v=".$video_id; 
$this->req =& new HTTP_Request($url); 
$response = $this->req->sendRequest(); 
$rescode = $this->req->getResponseCode(); 

echo "++response code++$rescode"; 
echo "***$response***"; 

if (PEAR::isError($response)) { 
    echo "<b>Please check whether the video added or not </b>"; 
} else {  
      $page = $this->req->getResponseBody(); 
//   echo "=====$page===="; 
      preg_match('/"videoplayback": "(.*?)"/', $page, $match); 
         $var_id = $match[1]; 
      echo "+++$var_id+++; 
} 

Все работает нормально, если я заменить preg_match с ниже код, но это я не нужен ..

preg_match('/"video_id": "(.*?)"/', $page, $match); 

строка, которую я пытаюсь матч

http://v17.lscache6.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dYR1RMVl9FSkNNOF9MRlpB&fexp=906320&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1292418000&key=yt1&signature=32DD3C5BF016489B43D15493F68ACCDE2AA720B5.95F66ACBE6FDFBC60978A14075A28020E083E8A8&factor=1.25&id=39743a9fde40b0dd&

Любые идеи, пожалуйста?

+0

@kvihayhari: вы пытались сбросить содержимое страницы, так же, как если бы вы не попали 404 или какой-либо другой странице ... – RageZ 2010-12-16 06:35:17

+1

Вы пытаетесь извлечь `some_string` из` "видеоигры": "some_string" `? если это так, строка, которую вы предоставили, не соответствует вашему шаблону. – galymzhan 2010-12-16 06:36:57

ответ

1

Если все, что вам нужно, чтобы проверить на присутствие «videoplayback» в $ странице, то может не просто использовать:

if (preg_match("/.*videoplayback.*/", $page){ 
    // use the whole $page url 
} 

Нет необходимости улавливать любые внутренние компоненты матча, не так ли?

Вы можете использовать туже картину, хотя:

$pattern = "/.*youtube\.com\/videoplayback\?.*/"; 

Просто выбрасывая идеи. Надеюсь, поможет.

0

сделал у пытался

preg_match('/\"videoplayback\"\:\s\"(.*)\"/iU', $page, $match); 

если оно не WRK попробовать это также

preg_match('/\"videoplayback\"\:\s\"([^\"]*)\"/iU', $page, $match); 
Смежные вопросы