四处寻找解决这个问题的方法。我的搜索是从Mu-6 search中获取JSON数据,但是搜索只适用于单个单词,例如搜索‘妈妈’或'mia‘返回的结果,但是搜索'mamma’并不返回结果。API使用的是UTF-8,我的文档被设置为相同的。我试图用preg_match来解决这个问题。有关index.php页面,请参见下面的my:
输入带有空格的搜索查询以返回结果后,我期望的。例如“妈妈咪呀”
实际结果没有搜索结果。只有当用户搜索单个短语“妈妈”或“米亚”时才有效
下面是一个工作页面:http://songfind.co.uk/lyrics-find
<form id"lyricsform" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="GET">
<input type="text" id="lyricinputtype" name="q"/>
<span class="error">* <?php echo $nameErr;?></span>
<select name="songtype" id="lyricstype">
<option name="song" value="song">Song Title</option>
<option name="artist" value="artist">Artist</option>
</select>
<input type="submit" value="Search" />
</form>
<?php
$query = $_GET['term'];
$apikey = 'MYAPIKEY';
$apicall = 'http://api.musixmatch.com/ws/1.1/track.search?q_track='.$query.'&apikey='.$apikey;
$url = file_get_contents($apicall);
$json = json_decode($url);
$nameErr = "";
$query = "";
if ($_SERVER["REQUEST_METHOD"] == "GET") {
if (empty($_GET["q"])) {
$nameErr = "Song Title or Artist is Required";
} else {
$query = test_input($_GET["q"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$query)) {
$nameErr = "Only letters and white space allowed";
}
}
echo 'You are searching for the Song: ' .$query;
foreach($json->message->body->track_list as $track_list) {
echo '<div style="float: left; width: 100%; display: block;">';
echo '<p style="float:left; margin-right:10px;"><img src="'.$track_list->track->album_coverart_100x100.'"></p>';
echo '<h2> Track Title: '.$track_list->track->track_name.'</h2>';
echo '<p> Artist Name: '.$track_list->track->artist_name.'</p>';
$track_id = $track_list->track->track_id;
//URL gets passed to lyrics.php to display the data on separate page
echo '<a href="lyrics.php/track.lyrics.get?track_id='.$track_list->track->track_id.'">View Lyrics</a>';
echo '</div>';
}
function test_input($data) {
$data = htmlspecialchars($data);
return $data;
}
}
?>
发布于 2019-05-20 09:17:23
试试这个;
$query = $_GET['term'];
$queryEncoded = urlencode($query); <-- I encoded search term.
$apikey = 'MYAPIKEY';
$apicall = 'http://api.musixmatch.com/ws/1.1/track.search?q_track='.$queryEncoded.'&apikey='.$apikey;https://stackoverflow.com/questions/51633819
复制相似问题