SoundCloud в returns a string of tags для каждого трека, как так:Фильтрация SoundCloud Теги с API 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
.
Это становится громоздким, когда я пытаюсь сузить дорожки, которые включают этот 1 термин, когда некоторые из этих терминов включают слова, используемые в других тегах.
Так, например, если этот тег я искал был Pop
, используя этот метод, я получаю песни, помеченные Soft Pop
, Country Pop
, Pop ballads
, и так далее, потому что с помощью strpos()
просто находит, что часть строки. Это не результат, на который я надеюсь; в этом случае я просто хочу получить песни с тегами Pop
.
Я думаю, что мне нужно отделить эту строку от массива, а затем пройти через массив, чтобы убедиться, что каждое значение неявно идентично тегу, который я ищу ... но я не уверен, как это сделать что. Я думаю, split()
по предложениям, а затем split()
оставшиеся пробелы?
Есть ли функция PHP, которая может сравнивать строку и длину строки, я думаю, чтобы она была идентична поисковому термину?
Я думаю, что лучший способ пойти хотя регулярные выражения и разбор всех тегов в массиве PHP ... Я вернусь здесь позже и ответьте на него, если никто не ответит до этого. – Dinei
Если у вас есть термин поиска по слову «pop», вы можете сначала отфильтровать те, у которых есть котировки, которые определяют многословный тег. Я думаю, что регулярное выражение поможет лучше здесь. – Twisty