首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP preg_match不匹配

PHP preg_match不匹配
EN

Stack Overflow用户
提问于 2015-01-16 12:25:47
回答 3查看 727关注 0票数 1

我想在这里从xml获取字符串:

代码语言:javascript
复制
https://gdata.youtube.com/feeds/api/videos/MZoO8QVMxkk?v=2

我想要视频标题作为可变的$vtitle和视频描述作为$vdescription

代码语言:javascript
复制
<?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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-16 12:32:23

您需要使用s标志或用[\s\S]*?替换.*?

s标志启用dotall模式。

更可取的做法是使用@Bob0t建议的,因为它们更能防止故障,并且是专门为处理XML和HTML而构建的

票数 2
EN

Stack Overflow用户

发布于 2015-01-16 12:32:08

试试这个;

代码语言:javascript
复制
$vdescription = preg_match("/<media:description type='plain'>(.*?)‬‬<\/media:description>/si", $vinfo, $match);

票数 0
EN

Stack Overflow用户

发布于 2015-01-16 12:35:12

正则表达式中的点字符与新行不匹配,这将导致preg_match报告不匹配。

“标记到您的模式。

代码语言:javascript
复制
    $vdescription = preg_match("/<media:description type='plain'>(.*?)‬‬<\/media:description>/s", $vinfo, $match);

仅仅为了重申其他人说过的话,使用DOMDocument之类的东西来处理XML要比使用正则表达式容易得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27983942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档