"\n"
et "\r\n"
, testés dans un message texte envoyé par le télégramme bot, pour créer un saut de ligne. Au lieu d'afficher un saut de ligne, le soulignement _
apparaît après leur utilisation.
Comment puis-je imprimer un saut de ligne dans un message de télégramme envoyé par 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 serait appréciée.
Il y a un meilleur moyen! Le problème est dû aux encodages d'URL ... Vous pouvez utiliser du texte PHP normal en utilisant \n
mais en le transmettant à 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, vous pouvez simplement utiliser entrer du texte:
$text = 'test 123
another text';
C'est tout!
2) Si votre code est exécuté sur un serveur Windows/Linux, vous pouvez utiliser la constante PHP_EOL
constante au lieu de \n
:
$text = 'text 123 '.PHP_EOL.'yet another text';
3) Et si vous recherchez une solution 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 les futurs visiteurs, je cite @Dagon dans les commentaires:
Utiliser %0A
créera un saut de ligne dans les messages de télégramme
vous devriez utiliser urlencode pour résoudre ce problème:
$text ="sth sth
sth sth";
$text = urlencode($text);
Toutes ces réponses sont à la fois "bonnes" et "mauvaises". En fait, cela dépend beaucoup de votre contribution. Par exemple, si vous avez une zone de texte à saisir, puis envoyez le contenu à Telegram, si l'utilisateur écrit dans la zone de texte et appuyez sur la touche Entrée, le texte dans Telegram sera
hello\neverybody
et pas
hello
everybody
Effectuer un encodage d'URL ne changera rien. Après avoir beaucoup lutté, je découvre un conflit avec le fait d'envoyer les données de zone de texte d'une page à une autre page échappant à certaines données.
Je résous ce problème en remplaçant le\n échappé par un non-échappé . Donc:
$my_msg = str_replace("\\n","\n",$my_msg);
Cela fonctionne sur Mac, PC et ainsi de suite avec du texte de la zone de texte.
Pour éviter les problèmes de codage et d'encodage, j'ai utilisé cette solution simple dans mon code:
Ensuite , j'insère le code suivant pour chaque saut de ligne:
<pre>\n</pre>
c'est à dire.
... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."
Bien sûr, la variable text était échappée par curl avant d’être ajoutée à l’URL:
$text = curl_escape($handle, $text);
il se peut que le résultat ne soit pas affiché comme vous le souhaitez dans les langues Unicode telles que le persan! vous pouvez préparer votre texte et l'utiliser:
$txt = implode("\n", explode('\n', $txt));
pour moi, cette solution fonctionne: utilisez un guillemet double
$message='Hi'
$message=$message."\n";
$message=$message.'Guys'
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);
essayez ici: https://telegram-bot-sdk.readme.io/docs/sendmessage