php,curl和imdb str_replace?

时间:2015-12-24 22:26:32

标签: php curl

我正在尝试在我的网站上制作imdb ratingchecker。 我到目前为止所以我可以使用URL的部分来查看评级并使用cURL + php + ajax / jQuery在我的页面上打印它。 但它只需要imdb-link的最后一部分正常运行并使用omdbapi.com的功能来剔除评级。

但如果用户输入http://www.imdb.com/title/tt2268016/则无效。 但如果用户只输入tt2268016,则该功能就像魅力一样。 所以我的问题是我不知道如何删除http://www.imdb.com/title/并离开tt2268016并使用它。

正在进行url处理的代码是这样的:     

 
    if (empty($_POST['imdbnum'])){
    $imdb = 'none';
    $imdblink = 'none';
    }else{
    $imdb = unesc($_POST['imdbnum']);

function get_movie_ratings($name) { $url = "https://omdbapi.com/?i=".urlencode($name); // send request $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $curlData = curl_exec($curl); curl_close($curl); return json_decode($curlData, true); } $imdb2 = get_movie_ratings($imdb); $imdbrate = $imdb2["imdbRating"]; $imdblink = unesc($_POST['imdbnum']); }

我该如何顺利解决这个问题?

最诚挚的问候!

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用str_replace删除多余的字符:

if (empty($_POST['imdbnum'])){
    $imdb = 'none';
    $imdblink = 'none';
} else {
    $imdb = unesc($_POST['imdbnum']);
    $imdb = str_replace('http://www.imdb.com/title/', '', $imdb);
    $imdb = str_replace('/', '', $imdb);
}

要考虑更多种类的网址变体,您可以使用preg_match

if (empty($_POST['imdbnum'])){
    $imdb = 'none';
    $imdblink = 'none';
} else {
    $imdb = unesc($_POST['imdbnum']);
    if (preg_match('/tt\d+/', $imdb, $search)) {
        $imdb = $search[0];
    } else {
        $imdb = 'none';
        $imdblink = 'none';
    }
    echo $imdb;
}