链接是:http://www.imdb.com/title/tt1840309/?ref_=hm_cht_t1 我正在使用
$sprangd = explode('/',$imdb_url);
echo $sprangd[4];
$imdb = array_search('tt', $sprangd);
现在。但它会返回http: 如果它找到http:或https:它需要继续搜索。我正在寻找这部分字符串:tt1840309 我该怎么办?我这样做是因为链接可能是www.imdb.com/title/tt1840309/?ref_=hm_cht_t1有时候,有时只有tt1840309这就是为什么我不能通过设置数字回显数组。因为它会是动态的。
答案 0 :(得分:1)
最简单的方法是使用正则表达式。这种方式你不在乎是从www,http或https开始的网址。
当url只是没有url其他部分的标题id时,正则表达式将返回空数组:
<?php
$url = 'http://www.imdb.com/title/tt1840309/?ref_=hm_cht_t1';
preg_match("/title\/(?P<titleId>[\w\d]+)\//", $url, $match);
echo isset($match['titleId']) ? $match['titleId'] : $url;
答案 1 :(得分:0)
使用parse_url()
和preg_match()
的组合:
$parsed_url = parse_url('http://www.imdb.com/title/tt1840309/?ref_=hm_cht_t1');
preg_match('/\/title\/(?P<title>[a-zA-Z0-9]+)\/[.]*/', $parsed_url['path'], $matches);
var_dump($matches['title']);
将返回:tt1840309
答案 2 :(得分:0)
为什么要使用正则表达式?只需解析url,然后获取url的路径,然后在其中搜索tt中的元素,过滤数组,弹出它
$sprangd = parse_url('http://www.imdb.com/title/tt1840309/?ref_=hm_cht_t1');
$sprangd_path = explode('/', $sprangd['path']);
$imdb = array_pop(array_filter(array_map(function($item){ if(strpos($item, 'tt') !== false){ return $item;} },$sprangd_path)));