我想在这里从xml获取字符串:
https://gdata.youtube.com/feeds/api/videos/MZoO8QVMxkk?v=2
我希望将视频标题视为变量$vtitle
,将视频描述视为$vdescription
<?php
$vinfo = @file_get_contents("https://gdata.youtube.com/feeds/api/videos/MZoO8QVMxkk?v=2");
$vtitle = preg_match("/<media:title type='plain'>(.*?)<\/media:title>/", $vinfo, $match);
$vtitle = $match[1];
$vdescription = preg_match("/<media:description type='plain'>(.*?)<\/media:description>/", $vinfo, $match);
$vdescription = $match[1];
?>
<h1><?php echo $vtitle; ?></h1>
<p><?php echo $vdescription; ?></p>
$ vtitle的输出:
新复仇者联盟预告片到来 - 漫威复仇者联盟:奥创纪元 预告片2
为什么$ vdescription的输出为空或不匹配? 请帮助解释这段代码有什么问题? 感谢
伊娃
答案 0 :(得分:2)
答案 1 :(得分:0)
试试这个;
$vdescription = preg_match("/<media:description type='plain'>(.*?)<\/media:description>/si", $vinfo, $match);
答案 2 :(得分:0)
正则表达式中的点字符与新行不匹配,这导致preg_match报告没有匹配。
You need to add the "s" flag to your pattern
$vdescription = preg_match("/<media:description type='plain'>(.*?)<\/media:description>/s", $vinfo, $match);
重申其他人所说的话,使用DOMDocument之类的东西处理XML比使用正则表达式更容易。