Php функция разбивки строки на части размером не более 640 символов
Добрый день!
Нужно написать функцию создающую из строки вида:
Товар 1 - 100 USD\n
Товар 2 - 200 USD\n
...
Товар 33 - 400 USD\n\n
Итого: 500 USD
Массив состоящий из частей строки размером не более N символов.
$arr = split($string, 640);
Требования:
- нельзя рвать слова
- нельзя рвать строки
- стараться разбивать на части сразу после переноса строки
- удалять \n в случае если оно в самом верху после переноса
В общем, нужно подумать как так разбивать строку чтобы каждая ее часть была лишена разрывов и лишних переносов.
Ниже прикрепляю скриншот где более наглядно понятно зачем это нужно.
Также предоставляю функцию которая сейчас это делает, но делает это корявенько.
function chunk_split_unicode($str, $l = 5, $e = "\r\n", $last = FALSE) {
$tmp = array_chunk(preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $l);
$res = [];
$count = (count($tmp) - 1);
foreach ($tmp as $k => $t) {
$res[] = (($count != $k) OR ($last)) ? implode('', $t) : implode('', $t) . $e;
}
return $res;
}
function new_split($str, $len = 100) {
$arr = [];
$str = explode(PHP_EOL, $str);
$count = (count($str) - 1);
foreach ($str as $k => $value) {
$arr = array_merge($arr, chunk_split_unicode($value, $len, PHP_EOL, ($count != $k) ? FALSE : TRUE));
}
return $arr;
}
Додатки 1
-
можно пример строки?
-
Актуальні фриланс-проєкти в категорії PHP
Зробити щоб листи про замовлення з магазину не потрапляли в спамЗараз є магазин на опенкарті, листи про замовлення потрапляють до спаму, треба зробити так щоб потрапляли в Вхідні (ukr.net gmail) перевірити. хостинг написав: Погана доставка електронної пошти може бути пов'язана з низькою репутацією відправника - IP або домену. У такому… PHP, Веб-програмування ∙ 14 годин 37 хвилин тому ∙ 45 ставок |
Перенести повністю готову адаптивну HTML5-структуру в WordPress.
12 000 UAH
Я шукаю досвідченого WordPress-розробника, який зможе перетворити наш ретельно підготовлений статичний HTML5/CSS3 код у високопродуктивну кастомну WordPress-тему. Фронтенд уже практично готовий (приблизно 99%): семантична розмітка, метадані та мультимовна структура (hreflang)… CMS, PHP ∙ 3 дні 16 годин тому ∙ 69 ставок |
Інтеграція GoPosПривіт, робив хтось інтеграцію GoPos з кастомним сайтом для ресторану в Польщі? Потрібна допомога, у них дуже скудна документація, є тільки swagger і той без описів https://app.gopos.io/doc/swagger-ui/index.html Суть така, використовували від них сайт для онлайн замовлень, якщо… PHP, Веб-програмування ∙ 4 дні 8 годин тому ∙ 25 ставок |
Прописати мета дані АЛЬТ за допомогою ІІСайт на Laravel, на сайті багато зображень, для яких потрібно прописати коректні за семантикою та релевантні для сторінки АЛЬТ описання зображення в автоматичному режимі, з можливістю перевірки AI та машинне навчання, PHP ∙ 5 днів 5 годин тому ∙ 35 ставок |
Потрібен розробник для завершення та інтеграції проєкту з автоматичного збору й обробки данних
700 UAH
Основна частина парсера вже реалізована. Парсер працює на Windows-середовищі через Microsoft Edge: сайт має антибот-захист, тому збір даних виконується не прямими HTTP-запитами, а через живу браузерну сесію. Скрипти керують відкритою вкладкою Edge через Chrome DevTools Protocol,… PHP, Веб-програмування ∙ 5 днів 11 годин тому ∙ 26 ставок |
