0

urlencodeを使用して文字列を変換しようとしています: <a href="<?php print 'search.php?query='.quote_replace(addmarks($search_results['did_you_mean'])).'&search=1'?>">

実は検索エンジンを実装したいです。

|-www
 |- index.php
 |- search directory
  |- search.php
  |- header.html
  |- search_form.html
  |- search_result.html
  |- footer.html

search.php includes header.html,search_form.html,search_result.html etc.

私はsearch.phpにアクセスします:localhost/index.php/?page=search

search_form.html検索するボタンを含めます。そして、以下を使用してsearch.phpを呼び出します<form action="index.php/?page=search" method="get">。それが正しいかどうかはわかりません。

検索リクエストを送信した後、search.phpはsearch_result.htmlを呼び出して結果を表示します。search_result.htmlのコード: <a href="<?php print 'search.php?query='.quote_replace(addmarks($search_results['did_you_mean'])).'&search=1'?>"><?php print $search_results['did_you_mean_b']; ?>

動作するはずですが、検索ボタンをクリックすると、結果のURLはになりindex.php/?query=&search=1ます。そして、そうあるべきだと思いますindex.php/?page=search/?query=&search=1

それで、私はそれを解決するためにurlencodeを使用しようとします。そして、その考えが正しいかどうかはわかりません。

4

2 に答える 2

10
$url = 'search.php?' . http_build_query(array(
    'query'  => $search_results['did_you_mean'],
    'search' => 1
));

これが最も簡単な方法です。 を参照してくださいhttp_build_query()

quote_replace()私はあなたの関数とが何をするのかわかりませんaddmarks()が、これを実行すると、と がurlencode("search.php?query=")エンコードされ、結果として( と と が となるのと同じです) 、合計で URL が使用できなくなります。?=search.php%3Fquery%3Durlencode("&search=1")&=%26search%3D1

于 2009-11-18T10:38:18.653 に答える
4

urlencode は次のように使用されます。

$url = 'http://example.com/page?foo='.urlencode($foo).'&bar='.urlencode($bar);
于 2009-11-18T10:40:51.700 に答える