如何以POST参数的形式逃避空间?

时间:2017-06-28 11:59:47

标签: php html

我有一个由两部分组成的波斯名字:محمد رضا

我还有一个像这样的HTML表单:

<form class="loginform" action="https://hammihan.com/search.php" method="POST">
    <input type="hidden" name="searcher" value="searcher">
    <input name="name" value="" type="text">
    <input name="family" value="" type="text">
    <select name="marriage">
        <option>جنسیت</option>
        <option value="1">مرد</option>
        <option value="2">زن</option>
    </select>
    <input type="submit" value="جستجو">
    <div class="marginbottom"></div>
</form>

当我将波斯名称写入name按钮并提交表单时,我会看到结果(基于该条款有一些结果)。一切都很好。

现在我想用PHP做同样的事情:

public function hammihan($request)
{
    $val = "حمید رضا";
    $url = "https://hammihan.com/search.php";
    $data['name'] = $val;
    $data['family'] = "";
    $data['marriage'] = "جنسیت";
    $data['searcher'] = "searcher";

    $handle = curl_init($url);
    curl_setopt($handle, CURLOPT_POST, true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);// here we are passing $data
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($handle, CURLOPT_URL, $url);
    $res = curl_exec($handle);

    return $res;
}

但它什么也没有回报。我的意思是搜索引擎说找不到结果。为什么?当我通过HTML表单发送它时,为什么会找到确切的名称,当我通过PHP发送它时将找不到它?

注意到两者都不起作用:

$val = utf8_encode('حمید رضا');

$val = urlencode('حمید رضا');

此外,我的PHP代码也适用于单个部分名称。所以问题是空间

1 个答案:

答案 0 :(得分:0)

我认为您的问题在于默认字符集

将其更改为

default_charset = "utf-8"

希望这可以解决您的问题