我需要捕获一个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
答案 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(懒惰)和关闭属性的双引号