在url之间使用搜索查询字词对表单进行Php重定向

时间:2009-07-10 02:01:26

标签: php search search-engine

我正在使用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=&amp;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。

1 个答案:

答案 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();
}
?>

注意:

  1. 现在可以合并两个PHP文件。
  2. 请勿在网址中使用“&amp;” - 仅适用于HTML。 Location:是HTTP标头,不是HTML。
  3. 使用method="get"代替method="post" - 搜索是一种幂等行为。
  4. 您不小心使用了$url[$_POST['audio']]而不是$url[$search_engine] - 您甚至从未使用$search_engine;怎么可能删除它可能会有所作为?