我想在这里从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的输出为空或不匹配?请帮帮这个密码有什么问题吗?谢谢
Eva
发布于 2015-01-16 12:32:23
您需要使用s标志或用[\s\S]*?替换.*?
s标志启用dotall模式。
更可取的做法是使用@Bob0t建议的这,因为它们更能防止故障,并且是专门为处理XML和HTML而构建的
发布于 2015-01-16 12:32:08
试试这个;
$vdescription = preg_match("/<media:description type='plain'>(.*?)<\/media:description>/si", $vinfo, $match);
发布于 2015-01-16 12:35:12
正则表达式中的点字符与新行不匹配,这将导致preg_match报告不匹配。
“标记到您的模式。。
$vdescription = preg_match("/<media:description type='plain'>(.*?)<\/media:description>/s", $vinfo, $match);仅仅为了重申其他人说过的话,使用DOMDocument之类的东西来处理XML要比使用正则表达式容易得多。
https://stackoverflow.com/questions/27983942
复制相似问题