您好 我正在使用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);
我想要匹配的字符串是
有什么想法吗?
答案 0 :(得分:1)
如果你需要的只是检查$ page中是否存在“videoplayback”,那么你不能只使用:
if (preg_match("/.*videoplayback.*/", $page){
// use the whole $page url
}
不需要捕获任何内部匹配组件,对吧?
您可能希望使用更严格的模式:
$pattern = "/.*youtube\.com\/videoplayback\?.*/";
只是抛弃想法。希望能帮助到你。
答案 1 :(得分:0)
你试过吗
preg_match('/\"videoplayback\"\:\s\"(.*)\"/iU', $page, $match);
如果它不起作用也试试
preg_match('/\"videoplayback\"\:\s\"([^\"]*)\"/iU', $page, $match);