0

こんにちは、次の検索フォームがあります。

<form method='get'><input type='text' name='searchvalue' value='<? if (isset($_GET['searchvalue'])) echo $_GET['searchvalue'];?>' />&nbsp;<input type='submit' value='Search' /><input type='hidden' name='pagenum' value='1' /></form>

これは、API にアクセスして検索結果を返す wordpress プラグインの一部です。検索データを API に送信するとfile_get_contents("$api_url/book/index.php/name/$searchvalue?key=$api_key");、クエリにスペースが含まれている場合は、次のようにフォーマットする必要があります。This%20Is%20An%20Example代わりに、次のようにフォーマットされています。This+Is+An+Example

str_replace()as so:を使用してプラスを置き換えるつもりでしstr_replace("+", "%20", $searchvalue);たが、機能していないようです!

助言がありますか?

4

4 に答える 4

2

rawurlencode() 関数を使用します。

$searchvalue = rawurlencode($searchvalue);

これで問題が解決します。

于 2013-10-26T19:04:21.220 に答える
0

以下のようにしてみてください。

file_get_contents("$api_url/book/index.php/name/".rawurlencode($searchvalue)."?key=$api_key");

ドキュメントを確認してください:http://www.php.net/manual/en/function.rawurlencode.php

いくつかの一般的な URL 関数: http://php.net/manual/en/ref.url.php

于 2013-10-26T19:05:23.037 に答える
-1

$searchvalue = str_replace('+', '%20', $searchvalue);トリックを行います。

http://www.php.net/manual/en/function.str-replace.php

于 2013-10-26T18:58:44.327 に答える
-1
  1. ドキュメントによると、Casimir et Hippolyte で言及されている PHP マニュアルへのリンクです。最初のパラメーターは検索文字列です。あなたの場合は '+'、2 番目のパラメーターは検索が置換される文字列です。あなたの場合は '%20' です。だからあなたのコマンドは適切なようです。

  2. ただし、 str_replace はオブジェクトのメソッドのように特定の文字列値を変更しないため、関数値からの戻り値を変数に割り当てるようにしてください。これは機能であり、変更された文字列を値として「のみ」返します。

次の事実は別として:

  • 通常、WP プラグインを手動で変更することはお勧めできません。
  • プラグインを使用した WP は非常に複雑なシステムであり、コード アクションですべての実行を解読するのが難しい場合があります。可能な限り常に同様のケースで最小限のテストを行い、問題のある部分のコードを WordPress で個別にテストします。
于 2013-10-26T19:12:00.723 に答える