preg_match не возвращает никакого значения? - PullRequest
0 голосов
/ 16 декабря 2010

Привет Я использую 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&

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

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

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

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

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

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

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

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

0 голосов
/ 16 декабря 2010

ты пробовал

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

, если он не работал, попробуйте это также

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