我正在使用PHP来重定向某些搜索查询。 有一些代码here (click)的例子。
我的PHP代码是:
audio_action.php:
<?php
$search_field = trim($_POST['audio_field']);
$search_engine = trim($_POST['audio']);
$url_params = preg_replace('/(\ )+/', '+', $search_field);
$url = array('deezer'=>'http://www.deezer.com/s.php?s=', 'jiwa'=>'http://www.jiwa.fm/#search/track/', 'last.fm'=>'http://www.last.fm/music?q=');
header('Location:'.$url[$_POST['audio']].$url_params)
?>
和video_action.php:
<?php
$search_field = trim($_POST['video_field']);
$search_engine = trim($_POST['video']);
$url_params = preg_replace('/(\ )+/', '+', $search_field);
$url = array('youtube'=>'http://www.youtube.com/results?search_type=&search_query=', 'dailymotion'=>'http://www.dailymotion.com/relevance/search/', 'google_video'=>'http://video.google.com/videosearch?q=');
header('Location:'.$url[$_POST['video']].$url_params)
?>
问题是,当搜索字词必须位于网址中间时,我无法使用它。
例如,对于Jiwa,它应该是:
http://www.jiwa.fm/#search/track/{%22q%22%3A%22keywords%22}
“关键字”是指关键字所在的位置。
如果没有%22}
个字符,搜索就无效了。
那么如何改进这个PHP代码以使其适用于这样的查询?
有人告诉我那个
$search_engine = trim($_POST['video']);
没用,但是当我删除它时,它就不再起作用了。
我目前正在使用video_action.php进行视频搜索,使用audio_action.php进行音频搜索,但如果您找到某种方法将这些文件合并为一个文件,同时在我的HTML代码中保留2个表单,那就太棒了。
请帮我改进此代码。
PS:我不想为此使用JavaScript。
答案 0 :(得分:2)
试试这个:
<?php
if (!empty($_REQUEST['audio_field']))
{
$url = array(
'deezer'=>'http://www.deezer.com/s.php?s=__keywords__',
'jiwa'=>'http://www.jiwa.fm/#search/track/{%22q%22%3A%22__keywords__%22}',
'last.fm'=>'http://www.last.fm/music?q=__keywords__');
header('Location:'.str_replace('__keywords__',preg_replace('/(\ )+/', '+', trim($_REQUEST['audio_field'])),$url[trim($_REQUEST['audio'])]));
die();
}
else if (!empty($_REQUEST['video_field']))
{
$url = array(
'youtube'=>'http://www.youtube.com/results?search_query=__keywords__',
'dailymotion'=>'http://www.dailymotion.com/relevance/search/__keywords__',
'google_video'=>'http://video.google.com/videosearch?q=__keywords__');
header('Location:'.str_replace('__keywords__',preg_replace('/(\ )+/', '+', trim($_REQUEST['video_field'])),$url[trim($_REQUEST['video'])]));
die();
}
else
{
// No search query; redirect to search page
header('Location:http://lostsymphonia.free.fr/r/index.html');
die();
}
?>
注意:
&
” - 仅适用于HTML。 Location:
是HTTP标头,不是HTML。method="get"
代替method="post"
- 搜索是一种幂等行为。$url[$_POST['audio']]
而不是$url[$search_engine]
- 您甚至从未使用$search_engine
;怎么可能删除它可能会有所作为?