PHP: Telegram Bot: insérer un saut de ligne dans un message texte

"n" et "rn", testé dans un message texte envoyé par télégramme bot, pour créer des sauts de ligne. Au lieu d'afficher le saut de ligne, underline _ apparaîtra après les avoir utilisés.

Comment je pourrais imprimer le flux de ligne dans le message de télégramme envoyé par le bot?

CODE

$txt = 'با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.';
$txt .= " n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';

Message Démo entrez la description de l'image ici

Toute aide sera appréciée.

35
demandé sur Charles Okwuagwu 2015-08-09 23:27:23

8 réponses

Il y a une meilleure façon! Le problème est dû aux encodages D'URL... Vous pouvez utiliser du texte PHP normal en utilisant \n mais en le passant à la méthode urlencode, comme suit:

$txt = urlencode("here is my text.\n and this is a new line \n another new line");

Ça marche pour moi!

45
répondu Majid 2017-03-02 12:53:33

1) Si vous développez votre code sous Windows / Linux OS, vous pouvez simplement utiliser enter in text:

$text = 'test 123
         another text';

C'est tout!

2) Si votre code s'exécute sur un serveur Windows / Linux, vous pouvez utiliser PHP_EOL constant au lieu de \n:

$text = 'text 123 '.PHP_EOL.'yet another text';

3) et si vous recherchez une soloution indépendante du système D'exploitation, vous pouvez utiliser %0A ou chr(10) à cette fin:

$text = 'text 123 '.chr(10).'yet another text';
29
répondu علیرضا 2018-04-26 09:35:22

Pour le futur visiteur juste je cite @ Dagon réponse dans les commentaires:

L'utilisation de {[0] } fera le saut de ligne dans les messages de télégramme

3
répondu Hossein Shahsahebi 2015-08-10 17:28:16

J'ai résolu le problème de cette façon :

$txt = 'aaaaaaaaa\nnew line1 \nnewline2';
$parameters = array('chat_id' => $chatId, "text" => $txt);

$parameters["method"] = "sendMessage";
echo json_encode($parameters);

Essayer ici : https://telegram-bot-sdk.readme.io/docs/sendmessage

0
répondu Matteo Pipitone 2016-11-11 13:46:30

Vous devez utiliser urlencode pour résoudre ce problème:

$text ="sth sth
sth sth";
$text = urlencode($text);
0
répondu sajad abasi 2017-03-20 19:40:28

Il se peut que le résultat ne soit pas affiché comme vous le souhaitez dans les langues Unicode comme le persan! vous pouvez préparer votre texte et utiliser ceci:

$txt = implode("\n", explode('\n', $txt));
0
répondu Payam Aryanfard 2017-09-23 03:51:22

Pour éviter les problèmes de codage et d'encodage, j'ai utilisé cette solution simple dans mon code:

  • tout d'abord, j'envoie mon message texte au format HTML en définissant l'argument parse_mode=HTML dans l'URL "sendMessage".
  • Puis , j'insère le code suivant pour chaque saut de ligne:

    <pre>\n</pre>

Ie.

... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."

Bien sûr, la variabletext a été échappée avant d'être ajoutée à L'URL:

$text = curl_escape($handle, $text);
0
répondu Hassan AFIF 2017-11-11 11:08:49

Pour moi Cette solution fonctionne: utiliser un guillemet double

$message='Hi'
$message=$message."\n";
$message=$message.'Guys'
0
répondu Moein Karimi 2018-07-18 09:36:13