【问题标题】:How to put a space into a URL in curl using php's exec如何使用 php 的 exec 在 curl 中的 URL 中添加空格
【发布时间】:2013-10-29 23:01:17
【问题描述】:

我正在使用 exec 做一个 curl。问题在于:

exec("curl --insecure https://site.com/?term=last day&x=1");

exec("curl --insecure https://site.com/?term=last%20day&x=1");

给我一​​个错误,因为“term”参数中没有合适的字符串。如果我只是去https://site.com/?term=lastday&x=1 它可以正常工作,但显然 %20 并不能转换为它们末尾的空格。

我认为在 curl 中将空格放入 URL 是有问题的。最简单的方法是什么?

【问题讨论】:

  • 你为什么不使用cURL functions
  • 尝试改用+
  • 您可以在浏览器中执行此操作,因为浏览器在在后台对其进行了正确编码。 cURL 不这样做。此外,您不能在这样的命令参数中使用空格。
  • 穆萨,谢谢!我不知道为什么我没有想到!

标签: php unix curl exec


【解决方案1】:

你需要使用escapeshellarg():

exec('curl --insecure ' . escapeshellarg($url));

exec() 在内部启动一个 shell,如果你没有正确转义字符,shell 可能会在字符串中扩展元字符,如 &

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 2012-05-02
    • 2021-07-19
    • 2018-06-25
    • 1970-01-01
    • 2011-07-26
    • 2014-04-18
    • 2011-12-24
    相关资源
    最近更新 更多