带有Telegram Bot API的Google App Engine通过PHP输出没有空格

时间:2016-10-02 03:23:58

标签: php google-app-engine telegram-bot

因此,我将我的PHP脚本配置为从我的联系表单发送消息到我与机器人的电报聊天。

这是PHP脚本代码:

<?php
if(trim($_POST["gotcha"]) !== "") {
  header("Location: https://example.com/");
} else {
  if(isset($_POST["name"]) && isset($_POST["email"]) && isset($_POST["subject"]) && isset($_POST["content"])) {

    $wholeMessage = "Name:"." ".$_POST["name"]." "."|"." "."Email:"." ".$_POST["email"]." "."|"." "."Subject:"." ".$_POST["subject"]." "."|"." "."Message:"." ".$_POST["content"];
    $data = "https://api.telegram.org/bot<BOTID>/sendmessage?chat_id=<CHATID>&text=".$wholeMessage;

    $response = file_get_contents($data);

    header("Location: https://example.com/thanks/");
  } else {
    header("Location: https://example.com/");
  }
}
?>

我的电报聊天的结果:

Name:firstname|Email:mail@mail.com|Subject:test|Message:testhttps://google.commouseappletest

仅使用%nbsp;输出:

Name:

没有其他输出。

如你所见,所有的空白都消失了。 我的代码有问题吗?

由于

1 个答案:

答案 0 :(得分:0)

您需要URL Encode

  • 使用%20作为空格。
  • 或使用urlencode()函数对您的网址进行编码。

这也可以使您的代码摆脱奇怪错误的危险,尤其是当您使用包含中文或其他特殊字符且没有网址编码的网址时。