打开时 CURL 更改非英文字符 url
CURL changes non-english characters when opening url
我正在尝试用 curl 打开一个 url end 回显该页面中的文本。 url 将参数发送到 python 脚本并根据参数创建文件。所以,我通过 ajax 向 wordpress 函数发送参数,这部分工作,它获取参数没有任何错误,然后我用这个创建 url 并使用 curlopt_url 打开它在后端。然后回显响应发送数据到ajax.
function my_function() {
$param1 = $_REQUEST['p1'];
$param2 = $_REQUEST['p2'];
$url = "http://localhost:1234/handle?a=$param1&b=$param2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_URL, $url);
$store = curl_exec ($ch);
echo substr($store, 1);
curl_close ($ch); exit();
假设 p2 包含非英文字符,如 ş、ğ、ı 等。函数正确获取它(当我回显 $url 而不是响应时我可以看到它),但在 CURLOPT_URL 他们正在改变的部分。
此外,当我打开 url 表单浏览器时,它工作正常。
根据 OP 成功评论,我添加了我的解决方案,因为答案将对未来的访问者有所帮助:
您需要对 url 中的非英文字符使用 url 编码。
$param2 = urlencode($_REQUEST['p2']);
旁注:
而不是对特定字段或参数使用完整 url 编码,但有时您需要在特殊字符情况下对完整 url 进行编码。
我正在尝试用 curl 打开一个 url end 回显该页面中的文本。 url 将参数发送到 python 脚本并根据参数创建文件。所以,我通过 ajax 向 wordpress 函数发送参数,这部分工作,它获取参数没有任何错误,然后我用这个创建 url 并使用 curlopt_url 打开它在后端。然后回显响应发送数据到ajax.
function my_function() {
$param1 = $_REQUEST['p1'];
$param2 = $_REQUEST['p2'];
$url = "http://localhost:1234/handle?a=$param1&b=$param2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_URL, $url);
$store = curl_exec ($ch);
echo substr($store, 1);
curl_close ($ch); exit();
假设 p2 包含非英文字符,如 ş、ğ、ı 等。函数正确获取它(当我回显 $url 而不是响应时我可以看到它),但在 CURLOPT_URL 他们正在改变的部分。 此外,当我打开 url 表单浏览器时,它工作正常。
根据 OP 成功评论,我添加了我的解决方案,因为答案将对未来的访问者有所帮助:
您需要对 url 中的非英文字符使用 url 编码。
$param2 = urlencode($_REQUEST['p2']);
旁注:
而不是对特定字段或参数使用完整 url 编码,但有时您需要在特殊字符情况下对完整 url 进行编码。