-1

我有这个文本块(来自 Discogs API),详细说明了有关包含单词“Pink”的乐队的信息......

http://pastebin.com/3vBnC0aE

我试图弄清楚如何从这段文本中正确提取艺术家姓名。我的尝试是:

<?php
    $url = "https://api.discogs.com/database/search?type=artist&q=pink"; // add the resource info to the url. Ex. releases/1

    //initialize the session
    $ch = curl_init();

    //Set the User-Agent Identifier
    curl_setopt($ch, CURLOPT_USERAGENT, 'YourSite/0.1 +http://your-site-here.com');

    //Set the URL of the page or file to download.
    curl_setopt($ch, CURLOPT_URL, $url);

    //Ask cURL to return the contents in a variable instead of simply echoing them
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //Execute the curl session
    $output = curl_exec($ch);

    //close the session
    curl_close ($ch);



    function textParser($text, $css_block_name){

        $end_pattern = '], "';

        switch($css_block_name){
            # Add your pattern here to grab any specific block of text
            case 'title';
                $end_pattern = '", "';
                break;
        }

        # Name of the block to find
        $needle = "\"{$css_block_name}\":";

        # Find start position to grab text
        $start_position = stripos($text, $needle) + strlen($needle);

        $text_portion = substr($text, $start_position, stripos($text, $end_pattern, $start_position) - $start_position + 1);
        $text_portion = str_ireplace("[", "", $text_portion);
        $text_portion = str_ireplace("]", "", $text_portion);

        return $text_portion;
    }

    $blockTitle = textParser($output, 'title');
    echo $blockTitle. '<br/>';



?> 

但这给出了这个错误:

警告:stripos():第 41 行 C:\xampp\htdocs\WellItsFixed3\TTpage1.php 中的字符串中不包含偏移量

第 41 行是

$text_portion = substr($text, $start_position, stripos($text, $end_pattern, $start_position) - $start_position + 1);

最终目标是能够在列表中呈现提取的乐队标题。

任何见解表示赞赏。谢谢你。

4

1 回答 1

1

这显然是一个 JSON 编码的字符串,您的方法过度了。做就是了:

$data = json_decode($your_string);

并将$data以结构化的方式包含所有信息,有关更多详细信息,请参阅json_decode() 手册

于 2016-01-03T09:48:15.217 回答