2009-07-10 10 views
0

検索クエリをリダイレクトするためにPHPを使用しています。 コードhere (click)のいくつかの例があります。URLから検索クエリを含むフォームの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の真ん中になければなりません。

例えば、ジワのためには、次のようになります。

http://www.jiwa.fm/#search/track/{%22q%22%3A%22keywords%22} 

「キーワードは」キーワードがあるべき場所です。

%22}文字がないと検索できません。

このPHPコードをこのようなクエリで使用できるように改善するにはどうすればよいですか?

誰かが

$search_engine = trim($_POST['video']); 

は無用であることをあまりにも私に言ったが、私はそれを削除すると、それはもう動作しません。

私は現在、ビデオ検索にaudio_action.phpを使用していますが、audio_action.phpでオーディオを使用していますが、HTMLコードに2つのフォームを保存しながら、これらのファイルを1つにマージする方法が見つかったら、

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

PS:これにはJavaScriptを使用しません。

答えて

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. URLに「&amp;」を使用しないでください。これはHTML専用です。 Location:はHTTPヘッダーで、HTMLではありません。
  3. method="post"の代わりにmethod="get"を使用します。検索は、冪等の動作です。
  4. 偶然$url[$search_engine]の代わりに$url[$_POST['audio']]を使用しました。あなたは$search_engineを使用することはありません。どのようにそれを削除すると違いを生むことができますか?
+0

お返事ありがとうございました:-) $ search_engineを削除すると、古いコードで何も変更されませんでした。私はテストをしたときに、悪い括弧などを削除する必要がありました。 コードを更新しましたが、何らかのエラーが発生しました: 構文解析エラー:予期しない構文エラー ';' 11行目の/mnt/102/sdb/c/4/lostsymphonia/r/action.phpにあります: header( 'Location:')。str_replace( '__ keywords __'、$ url_params、$ url [$ search_engine]); $ url [$ search_engine]から来ていると思いませんか? Or: $ search_engine = trim($ _REQUEST ['audio']);と['ビデオ]? なぜあなたはそれを保つことにしましたか? (PS:ここで行方不明はできません) – Mark

+0

私は ')'を忘れました。私は今それを追加しました - 私の現在のコードが動作するはずです。 '$ search_engine'は' $ _REQUEST ['video'] 'よりも綺麗に見えるので、私はこれを保つことにしました。 – Zarel

+0

ありがとう、私はここに私のコードを更新しました:http://lostsymphonia.free.fr/r/index.htmlそれはオーディオ検索ではなく、ビデオでは動作します。私のフルコードにはより多くの検索エンジンとフォームがありますので、軽くしたいと思います。それは本当に$ search_engineの部分が必要ですか? – Mark

関連する問題