0

我正在使用 PHP 来重定向一些搜索查询。这里有一些代码示例(单击)

我的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。

4

1 回答 1

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;在 URL 中使用“”——这仅适用于 HTML。Location:是一个 HTTP 标头,它不是 HTML。
  3. 使用method="get"代替method="post"- 搜索是一种幂等操作。
  4. 您不小心使用$url[$_POST['audio']]$url[$search_engine]- 您甚至从未使用$search_engine; 删除它怎么可能有所作为?
于 2009-07-10T02:14:05.850 回答