2017-07-18 37 views
0

我需要检索数据,视频ID(h7rhqXbdIts)的preg_match检索串

<?php 
$pattern = '\'/data-videoid="([^"]+)/\''; 
$subject = '<amp-youtube width="640" height="360" data-videoid="h7rhqXbdIts" layout="responsive"></amp-youtube>'; 
$result = preg_match($pattern, $subject , $matches); 
echo $result; 
print_r($matches); 
?> 

回答

1

你在你的模式的开始/结束添加了一些'单引号,它试图为引号(不存在)进行文字匹配。简单地删除它们应该能够解决您的问题:

<?php 
$pattern = '/data-videoid="([^"]+)/'; 
$subject = '<amp-youtube width="640" height="360" data-videoid="h7rhqXbdIts" layout="responsive"></amp-youtube>'; 
$result = preg_match($pattern, $subject , $matches); 
echo $result; 
print_r($matches); 
?> 

this output在这里你可以看到$matches[1]包含你正在寻找(h7rhqXbdIts)的视频ID。

0

此代码应工作

$subject = '<amp-youtube width="640" height="360" data-videoid="h7rhqXbdIts" layout="responsive"></amp-youtube>'; 
$result = preg_match('@data-videoid="(.*?)"@s', $subject , $matches); 
echo $result; 
print_r($matches); //Array ([0] => data-videoid="h7rhqXbdIts" [1] => h7rhqXbdIts) 
+0

我的代码有什么问题? – vietnguyen09

+0

你推送的第一个代码示例,有一个空白模式,并没有工作。您的代码片段现在不显示为什么他的代码无法正常工作。没有解释的代码块几乎无助于未来的读者理解为什么代码无法正常工作。 – FrankerZ

+0

我接受'没有解释'部分,但即使'$ pattern ='''仍然有效,因为我直接在'preg_match'内写入。 – vietnguyen09