每个音轨的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 Pop
,Country Pop
,Pop ballads
的歌曲等等on,因为使用strpos()
只是找到字符串的一部分。那不是我希望的结果;在这个例子中,我只想获得标记为Pop
的歌曲。
我在想我需要将这个字符串分成一个数组,然后在数组中循环以确保每个值与我正在搜索的标记隐式相同...但我不知道我会怎么做去做。我猜引号是split()
,然后split()
剩下的是空格吗?
是否有一个PHP函数可以比较字符串的字符串和长度,我想,以确保它与我的搜索词相同?
答案 0 :(得分:2)
尝试使用str_getcsv()
分割成数组,并使用空格作为分隔符。它默认使用引号作为附件,并忽略引号内的空格。然后使用in_array()
:
$tracktags = str_getcsv($tracktags, ' ');
if(in_array('Pop', $tracktags)) {
//we found a match
}
要了解其中的内容:
print_r($tracktags);