我想有一个php函数,它将删除任何输入并仅保留一个数字ID,在下面的示例中为36816268。
输入可以是这样的:
<iframe src="http://player.vimeo.com/video/36816268" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
或者像这样
<iframe src="http://player.vimeo.com/video/36816268" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><p><a href="http://vimeo.com/36816268">ABCinema</a> from <a href="http://vimeo.com/eeseitz">Evan Seitz</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
我可以将第一部分剥离为
preg_match('%.*http://player.vimeo.com/video/%im', $subject)
答案 0 :(得分:1)
由于我找不到合适的副本链接(已经多次询问类似的问题),我会把它作为答案。只要URL的其余部分不需要更改,这很容易。
$matches = array();
preg_match("~.*http://player.vimeo.com/video/(\d+)~im", $subject, $matches);
print_r($matches);
echo $matches[1];
Array
(
[0] => <iframe src="http://player.vimeo.com/video/36816268
[1] => 36816268
)
答案 1 :(得分:0)
$str = '<iframe src="http://player.vimeo.com/video/36816268" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
preg_match('#src=\"[^\d]+(\d+)\"#Ui', $str, $m);
print_r($m);
答案 2 :(得分:0)
您必须匹配组中的ID并将整个字符串替换为ID。
示例脚本:
<?php
$string = '<iframe src="http://player.vimeo.com/video/36816268" width="400" height="225"
frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
echo preg_replace('#^.*video/(\d+).*$#i', '$1', $string); // prints '36816268'
?>
模式说明:
#
启动模式^
在字符串.*
匹配任何内容,除了换行符video/
匹配字符串视频/ (
开始捕获群组,群组1 \d+
匹配一个或多个数字)
关闭捕获小组.*
匹配任何内容$
匹配字符串的结尾#
结束模式i
使匹配大小写不敏感