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';
Toute aide sera appréciée.
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!
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';
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
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
Vous devez utiliser urlencode pour résoudre ce problème:
$text ="sth sth
sth sth";
$text = urlencode($text);
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));
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);
Pour moi Cette solution fonctionne: utiliser un guillemet double
$message='Hi'
$message=$message."\n";
$message=$message.'Guys'