使用 PHP 过滤 Soundcloud 标签

Filtering Soundcloud Tags with PHP

Soundcloud 的 API returns a string of tags 每个曲目如下:

Pop Rock "Soft Pop" "Soft Rock" "Easy Listening" Jazz

其中字符串包含由空格分隔的标签列表。多词标签用双引号引起来。

起初,我使用的是

$tracktags = 'Pop Rock "Soft Pop" "Soft Rock" "Easy Listening" Jazz';
if(strpos($tracktags, "Soft Rock") !== false) {
    //we found a match
}

查找所有 Soft Rock 的歌曲。

当我试图缩小包含这 1 个术语的轨道时,当其中一些术语包含在其他标签中使用的单词时,这会变得很麻烦。

因此,例如,如果我正在寻找的那个标签是 Pop,使用这种方法我得到标记为 Soft PopCountry PopPop ballads 的歌曲依此类推,因为使用 strpos() 只会找到字符串的那一部分。那不是我希望的结果;在这种情况下,我只想获取标记为 Pop 的歌曲。

我想我需要将这个字符串分成一个数组,然后循环遍历该数组以确保每个值都隐含地与我正在搜索的标签相同......但我不确定我会怎么做去做。我猜 split() 是引号,然后 split() 剩下的是空格?

是否有 PHP 函数可以比较字符串和字符串的长度,我想,以确保它与我的搜索词相同?

尝试使用 str_getcsv() 和 space 作为分隔符拆分成一个数组。默认情况下,它将使用引号作为附件,并忽略引号内的 space。然后只需使用 in_array():

$tracktags = str_getcsv($tracktags, ' ');

if(in_array('Pop', $tracktags)) {
    //we found a match
}   

查看内容:

print_r($tracktags);