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
  1. 根据文档,链接到 Casimir et Hippolyte 提到的 PHP 手册,第一个参数是搜索字符串,在您的情况下为 '+',第二个参数是搜索将被替换的字符串,在您的情况下为 '%20'。所以你的命令似乎是正确的。

  2. 但是请确保您将函数值的返回值分配给变量,因为 str_replace 不会像对象上的方法一样更改给定的字符串值。它是函数,它“仅”将更改的字符串作为值返回。

除了以下事实:

  • 手动修改 WP 插件通常不是一个好主意
  • 带有插件的 WP 是一个非常复杂的系统,有时很难用你的代码操作来破译所有的执行。尽可能总是在类似的情况下测试最少,有问题的部分代码由 WordPress 分开。
于 2013-10-26T19:12:00.723 回答
-1

$searchvalue = str_replace('+', '%20', $searchvalue);会成功的。

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

于 2013-10-26T18:58:44.327 回答