nastya97core
@nastya97core
Начинающий программист

Как поделить текст переменной на несколько частей обрезая на определённом слове?

Здравствуйте. В Телеграм есть ограничение на количество символов в сообщении: 4096. Ситуация, которую я пытаюсь предотвратить маловероятна, но возможна. Мне нужно, в случае превышения лимита размера сообщения, поделить его на несколько штук и отправить. Но есть момент: сообщение у меня выглядит вот так:
$output = "<i>Запись №513</i> \nКакой-то текст на 50-150 символов\n".hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0').hex2bin('E380B0')."\n<i>Запись №514</i>\nA Какой-то текст на 50-150 символов";

hex2bin - это смайлик (разделительная волна сообщения
607ea5d0866ad767255636.png
То есть если просто отсчитывать 4000 символов, резать и отправлять, то можно нарваться на середину какого-нибудь hex2bin.
Сама функция отправки выглядит вот так:
function telega($method, $data) {
	$ch = curl_init("https://api.telegram.org/bot00000:00000000/$method");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	$curlRes1 = curl_exec($ch);
	echo $curlRes1;
}

$data = [
	"chat_id"=> $main_id,
	"text"=> $output,
	"parse_mode" => "html"
	];

//Отправляем сообщение
telega("sendMessage", $data);


Подскажите пожалуйста, как можно, в случае превышения длины сообщения, разрезать его на слове <i>Запись и отправить уже в 2 этапа? То есть это как раз то слово, с которого начинается следующая инфа.
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
@PanDar
Ну.... Что такое строка? это почти массива, то есть... берем strlen проверяем длину, если больше 4096, но вставляем в строку разделитель на это место, например "_-_" и разделяем строку по символам столько раз, на сколько превышает массив 4096
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы