Php 为卷曲准备字符串

Php 为卷曲准备字符串,php,curl,Php,Curl,我在PHP中使用CURL,如下所示: curl_setopt_array($curl, array( CURLOPT_URL => "https://api.sendgrid.com/v3/mail/send", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION =&g

我在PHP中使用CURL,如下所示:

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.sendgrid.com/v3/mail/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",

CURLOPT_POSTFIELDS => "{"value\":\"$content\"}"
等等

$content
是一个非常简单的字符串时,这可以很好地工作,但当它是多行或具有特殊字符时,它会被拒绝

于是我做了:
$content=curl\u escape($curl,$content\u 1)

这对于那些更复杂的字符串也很有效,但是,它返回了一个完全编码的HTML“blob”。这通常不会是一个问题,但是内容是通过电子邮件直接发送的,所以在发送之前我无法解码。有没有其他方法可以在不完全编码所有内容的情况下确保这些字符串的安全?

使用
json\u encode()
创建json参数

CURLOPT_POSTFIELDS => json_encode(array('value' => $content))

如果您试图发送JSON,请使用
JSON\u encode()
正确格式化。@Barmar这是为sendgrid准备的,他们的文档有点糟糕,所以我不确定它想要什么。你是说我在
CURLOPT\u POSTFIELDS
中发送的所有内容都是
json\u encode()
还是仅仅是
$content
?谢谢。不幸的是,我过于简化了我的示例,完整的格式实际上是这样的:,因此需要包含更多的参数。我如何组合所有这些?只需制作一个包含所有参数的多维PHP数组
json_encode()
将处理所有格式设置。