Задать вопрос
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 этапа? То есть это как раз то слово, с которого начинается следующая инфа.
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@PanDar
Ну.... Что такое строка? это почти массива, то есть... берем strlen проверяем длину, если больше 4096, но вставляем в строку разделитель на это место, например "_-_" и разделяем строку по символам столько раз, на сколько превышает массив 4096
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽