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)
?>

問題は、検索語がURLの途中にある必要がある場合に使用できないことです。

たとえば、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つのフォームを保持しながら、これらのファイルを1つのファイルにマージする方法を見つけたら素晴らしいでしょう。

このコードを改善するのを手伝ってください。

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. これで、2つのPHPファイルをマージできます。
  2. &amp;URLで「」を使用しないでください。これはHTML専用です。Location:HTMLではないHTTPヘッダーです。
  3. method="get"-検索の代わりに使用することmethod="post"はべき等のアクションです。
  4. $url[$_POST['audio']]あなたは代わりに誤って使用しました$url[$search_engine]-あなたは決して使用しません$search_engine; どうすればそれを取り除くことが違いを生むのでしょうか?
于 2009-07-10T02:14:05.850 に答える