当通过API向松弛发送消息时,Curl和PHP无法正确传递新行

时间:2018-04-01 13:11:05

标签: php curl slack-api

我正在尝试使用curl发送使用php的松弛消息。我能够通过命令行发送消息,因为curl没有问题来自在线示例。我的问题是将其转换为php。当我通过php使用curl时,新行\ n不会作为新行传递。它以文字形式出现。

这是我的卷曲示例,可以发送新行

curl -X POST -H 'Authorization: Bearer xxxxx-xxxxxx-xxxxx-xxxxx' -H 'Content-type: application/json' --data '{"username":"Robot_Savant","channel":"recieved_test","as_user":"false","text":"First Line of Text\nSecond Line of Text"}' https://slack.com/api/chat.postMessage
  

卷曲输出:

     

第一行文字

     

第二行文字

这是我的PHP代码。

<?php

// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();

$data = http_build_query([
    "channel" => '#recieved_test', //"#mychannel",
    "text" => 'First Line of Text\nSecond Line of Text', //"Hello, Foo-Bar channel message.",
    "as_user" => "false",
    "username" => "Robot_Savant"
]);
curl_setopt($ch, CURLOPT_URL, "https://slack.com/api/chat.postMessage");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Authorization: Bearer xxxxx-xxxxxx-xxxxx-xxxxx";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

?>
  

通过Php输出卷曲:

     

第一行文字\ n第二行文字

我不确定如何让它发挥作用。任何帮助都会很棒。我尝试了很多不同的标题设置。我从stackoverflow或slack api示例中提取了两段代码。

1 个答案:

答案 0 :(得分:3)

变化:

"text" => 'First Line of Text\nSecond Line of Text',

要:

"text" => "First Line of Text\nSecond Line of Text",

在PHP中使用单引号将字面输出\ n为\ n,而不是换行符。