的SoundCloud的API returns a string of tags像这样每个音轨:过滤的SoundCloud的标签用PHP
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
等歌曲,因为使用strpos()
刚刚找到字符串的一部分。这不是我所希望的结果;在这种情况下,我只想获取标记为Pop
的歌曲。
我想我需要将此字符串分隔成一个数组,然后循环访问数组以确保每个值都隐含地与我正在搜索的标签相同...但我不知道该怎么做那。我猜split()
由报价,然后split()
剩下的空格?
是否有PHP函数可以比较字符串和字符串的长度,我猜,以确保它与我的搜索词相同?
我觉得最好的方式是,虽然正则表达式和PHP数组解析所有标签......我会回来在这里稍后再回答,如果没有人回答的话。 – Dinei
如果您有一个单词搜索术语“流行”,您可以首先使用定义多字标签的引号过滤掉。我认为正则表达式在这里会有更好的帮助。 – Twisty