Hossein Shahsahebi
"\n"
y "\r\n"
, probado en un mensaje de texto enviado por el bot de Telegram, para crear un salto de línea. En lugar de mostrar el salto de línea, subraye _
aparecerá después de usarlos.
¿Cómo podría imprimir un salto de línea en un mensaje de telegrama enviado por bot?
CÓDIGO
$txt="با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.";
$txt .= " \n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';
Cualquier ayuda será apreciada.
Majid
¡Hay una mejor manera! El problema se debe a las codificaciones de URL… Puede usar texto PHP normal usando \n
pero pasándoselo a urlencode
método, de la siguiente manera:
$txt = urlencode("here is my text.\n and this is a new line \n another new line");
¡Esto funciona para mi!
-
Lo siento Majid, ahora pruebo otra respuesta y todas las opciones fallaron, así que desmarco su respuesta y verifico la tuya
– Hossein Shahsahebi
16 de agosto de 2015 a las 18:56
-
urlencode no me funciona (codifica todo, incluidos los espacios). Si tiene la costumbre de usar comillas simples, \n debe estar entre comillas dobles: $text = ‘my text’ . “\norte”;
–Quentin Campbell
5 de diciembre de 2018 a las 15:40
علیرضا
1) Si desarrolla su código en el sistema operativo Windows/Linux, simplemente puede ingresar el texto:
$text="test 123
another text";
¡Eso es todo!
2) Si su código se ejecuta en un servidor Windows/Linux, puede usar PHP_EOL
constante en lugar de \n
:
$text="text 123 ".PHP_EOL.'yet another text';
3) Y si busca una solución independiente del sistema operativo, puede usar %0A
o chr(10)
para este propósito:
$text="text 123 ".chr(10).'yet another text';
-
@Majid porque estás en Mac! en iOS, el
PHP_EOL
y salto de línea, es igual a%0D
(o\r
). pero en linux y windows, elPHP_EOL
y el salto de línea es igual a%0A
(o\n
) Y%0D%0A
(o\r\n
).– علیرضا
14 de agosto de 2015 a las 3:22
-
@Majid agrego una tercera vía para ti 🙂
– علیرضا
14 de agosto de 2015 a las 3:33
-
Gracias por considerar el problema. ¡Estoy en Mac, pero el servidor que ejecuta los códigos PHP es un servidor Linux en Internet! De todos modos, gracias por agregar la tercera vía 🙂
– Majid
15 de agosto de 2015 a las 2:02
Para futuros visitantes, solo cito la respuesta de @Dagon en los comentarios:
Usando %0A
hará saltos de línea en los mensajes de Telegram
-
Esta debería ser la respuesta aceptada. los
urlencode
la función no es independiente del lenguaje. Tu solución funciona al usar la API de Telegram en cualquier entorno o idioma.– Dawson B.
3 de noviembre de 2020 a las 23:39
Después de leer y probar todas estas respuestas, solo quería publicar mi propia solución. Tengo una aplicación en Laravel 5.8 que envía la reserva tanto por e-mail como por mensaje de Telegram.
$telegramMessage =
"<strong>Reservation Request</strong>\n".
'<strong>Name:</strong> ' . $reservation->reserv_name . "\n".
'<strong>E-mail:</strong> <a href="https://stackoverflow.com/questions/31908527/mailto:" . $reservation->email . '"> ' . $reservation->email . "</a>\n".
'<strong>Phone:</strong> ' . $reservation->phone . "\n".
'<strong>Reservation Date/Time:</strong> ' . $reservation->reserv_date_time->format('d-m-Y H:i') . "\n".
'<strong>Number of people:</strong> ' . $reservation->number_of_people . "\n".
'<strong>Message:</strong> ' . $reservation->reserv_message . "\n";
Telegram::sendMessage([
'chat_id' => env('TELEGRAM_CHAT_ID', ''),
'parse_mode' => 'HTML',
'text' => $telegramMessage,
]);
Más o menos he usado todas las etiquetas html que permite la API de Telegram. Debe prestar atención \n debe estar entre comillas dobles.
Puede usar %0A en lugar de \n.
Payam Aryanfard
¡Es posible que no muestre el resultado que desea en idiomas Unicode como el persa! puedes preparar tu texto y usar esto:
$txt = implode("\n", explode('\n', $txt));
Hassan AFIF
Para evitar problemas de codificación y codificación, utilicé esta solución simple en mi código:
- Primeroenvío mi mensaje de texto en formato HTML configurando el parse_mode=HTML argumento en la URL “sendMessage”.
-
Despuésinserto el siguiente código para cada salto de línea:
<pre>\n</pre>
es decir.
... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."
por supuesto el texto la variable se escapó de curl antes de agregarse a la URL:
$text = curl_escape($handle, $text);
@Dagon muchas gracias, el primero solo duplica el mensaje e imprime dos veces, pero el segundo hace el trabajo. ¿Puedo preguntar dónde está la fuente de estos códigos?
– Hossein Shahsahebi
09/08/2015 a las 20:56
El primer hit de Google para mí fue: twilio.com/help/faq/sms/…
– usuario557846
09/08/2015 a las 20:58
un simple
\n
debería funcionar, es posible que el administrador de bots que está utilizando esté haciendo algo de limpieza antes de enviar el mensaje. estoy usando nodejs y\n
funciona bien– Exlord
14 de diciembre de 2016 a las 11:04