选择iframe代码中的部分网址

时间:2017-10-17 19:39:24

标签: php regex iframe preg-match

我需要捕获一个ID,该ID是iframe标记内的URL的一部分。 我知道这可以用正则表达式完成,但我不是很擅长,我做了几次尝试但得不到结果,iframe就是这个(ID可能会有所不同):

<iframe src="https://www.example.com/embed/ph57d6z9fa1349b" frameborder="0" height="481" width="608" scrolling="no"></iframe>

我想要的ID是:

ph57d6z9fa1349b

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式拆分字符串。

$re = '/\<iframe[^\>]+src\="(.+?)\/([A-Za-z0-9]+)"/';
$str = '<iframe src="https://www.example.com/embed/ph57d6z9fa1349b" frameborder="0" height="481" width="608" scrolling="no"></iframe>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

如果你想列出id代码(比如'ph57d6z9fa1349b'),你可以这样做:

<?php
$re = '/\<iframe[^\>]+src\="(.+?)\/([A-Za-z0-9]+)"/';
$str = '<iframe src="https://www.example.com/embed/ph57d6z9fa1349b" frameborder="0" height="481" width="608" scrolling="no"></iframe>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

foreach ($matches as $match) {
    $id = $match[2];    // The required id code
    echo $id;           // Echo it
}
?>

答案 1 :(得分:0)

此正则表达式匹配source属性并将您的desided id放入组1中 src=".+\/(.+?)"

  • 第一部分src="匹配属性的开头
  • .+\/匹配网址正文,直到最后一个斜杠(贪婪)
  • (.+?)"匹配您的ID(懒惰)和关闭属性的双引号