PHP регулярное выражение с preg_match - PullRequest
0 голосов
/ 25 февраля 2012

Мне нужно получить vimeo ID этого кода iframe, который является моей строкой.

$str = '<iframe src="http://player.vimeo.com/video/34134823?title=0&amp;byline=0" width="900" height="506" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'

Я считаю, что идентификационная часть 34134823 может содержать более или менее 8 символов, поэтому я не могу использовать индексы.
Я мог бы сделать это с 2 взрывами, один для http://player.vimeo.com/video/ и чем один для вопросительного знака ?, но я уверен, что это было бы лучше с регулярным выражением, только я нуб с этим ..

Ответы [ 3 ]

2 голосов
/ 25 февраля 2012

Почему бы не использовать два взрыва? Конечно, вы можете сделать это с помощью регулярного выражения. Но учитывая способ определения URL, я сначала удалил бы все после первого ?, затем все до последнего / в остатке.

В то время как некоторые считают регулярное выражение элегантным (и на самом деле я мог бы даже использовать его сам), strpos и strrpos столь же быстр и надежен здесь.

$end = strpos($test, "?") - 1;
$sta = strrpos(substr($test, 0, $end), "/") + 1;
$ret = substr($test, $sta, $end);
1 голос
/ 25 февраля 2012
$pattern = '/\<iframe\s+.*src\=\"?[^\"]*player\.vimeo\.com\/video\/([\d]{5,})\??.*\".*\<\/iframe\>/i';

if(preg_match($pattern, $iframe_tag, $result)){
    $vimeo_id = $result[1];
}
1 голос
/ 25 февраля 2012
<?php
$str = '<iframe src="http://player.vimeo.com/video/34134823?title=0&amp;byline=0" width="900" height="506" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';

$stat = preg_match('/.*video\/(\d{1,})\?title.*/', $str, $matches);

print_r($matches);
...