使用PHP过滤Soundcloud标签

时间:2015-10-27 19:08:11

标签: php strpos

每个音轨的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的所有歌曲。

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

因此,例如,如果我要查找的代码是Pop,则使用此方法我会收到标记为Soft PopCountry PopPop ballads的歌曲等等on,因为使用strpos()只是找到字符串的一部分。那不是我希望的结果;在这个例子中,我只想获得标记为Pop的歌曲。

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

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

1 个答案:

答案 0 :(得分:2)

尝试使用str_getcsv()分割成数组,并使用空格作为分隔符。它默认使用引号作为附件,并忽略引号内的空格。然后使用in_array()

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

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

要了解其中的内容:

print_r($tracktags);    
相关问题