- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Нуждаюсь в совете более искушенных php-шников.
Ситуация. Есть некий текст неизвестной длины.
Надо разбивать текст на блоки. Чтобы каждый блок помещался в фиксированном div, страницах книги.
Сначала: в левом листе книги - меню, в правом - первый блок текста. Если текст не влазит - нажимаю далее. Аяксом гружу в левый лист второй блок, если и его мало - то в правый лист - третий блок и т.д.
Допустим, 1000 знаков utf-8 влазят в блок.
Код:
$text = strip_tags ($text);
$strlength = mb_strlen($text,'UTF-8');
function obrez($str, $limit)
{
$str = mb_substr($str,0,$limit+1,'UTF-8');
return substr($str,0,strrpos($str,' '));
}
$text_prev = obrez($text, 1000);
Тут все хорошо. Я обрезал первую часть текста до пробела, чтобы не резать слово...
Дальше - хуже.
Я пытаюсь обрезать второй (энный) блок. Но тут, если я режу от 1000-ого знака, начало - произвольная буква. Мне нужно, чтобо обрезало от начала слова. Грубо говоря: стартом mb_substr должен быть не 1000, а позиция пробела - первого перед 1000.
function obrez2($str, $limit)
{
$str = mb_substr($str,1000,$limit+1,'UTF-8');
return substr($str,0,strrpos($str,' '));
}
Как мне узнавать позицию этого пробела???
Спасибо!
http://php.ru/forum/viewtopic.php?t=27083
Вот здесь почти готовое решение
http://php.ru/forum/viewtopic.php?t=27083
Вот здесь почти готовое решение
Вы, простите, читали мой вопрос???!
В приведенной теме парень хочет отрезать от начала и до знака, что я успешно сделал и указал в теме...
Мне надо ВТОРОЙ блок. Не от номера знака, а от номера пробела, перед этим знаком...
Строго говоря, мне надо узнать, какой номер в строке занимает пробел, расположенный перед заданным числом-знаком.
Дальше - хуже.
Я пытаюсь обрезать второй (энный) блок. Но тут, если я режу от 1000-ого знака, начало - произвольная буква. Мне нужно, чтобо обрезало от начала слова.
Тот блок (по ссылке) будет резать строку по словам. Нет ни какой причины думать, что отрезав первый кусок строки, вы не сможете определить начало следующей части и т.д.
Или не сможете?😂
---------- Добавлено 30.10.2013 в 16:48 ----------
Строго говоря, мне надо узнать, какой номер в строке занимает пробел, расположенный перед заданным числом-знаком.
Разбивайте по пробелам и считайте? Вы же не этого хотите?..
Или не сможете?😂
, нет, я тупой!
Что мне вместо нуля ставить в mb_substr, чтобы резало от пробела перед нужным мне числом?
Ну, вам виднее, чего я хочу, видимо... Просто я другой логики, не могу притянуть сюда, иначе, как найти предыдущий пробел, перед нужным мне числом и резать от его номера... Вот и хочу узнать, как этот номер определить.
Если я не прав - подскажите логику.
Пространные наталкивания, которые очевидны вам - мне не ясны... Можно конкретики?
Конкретика - формируйте массив обрезая по словам, а не по знакам.
т.е. ключевая функция wordwrap вот от ее результатов и отталкивайтесь. Тогда во второй части у вас будет не случайная буква, а начало слова, или предлог, или союз, или пунктуация.
Также возможны еще варианты из-за UTF-8
т.е. ключевая функция wordwrap вот от ее результатов и отталкивайтесь. Тогда во второй части у вас будет не случайная буква, а начало слова, или предлог, или союз, или пунктуация.
Также возможны еще варианты из-за UTF-8
ну зная пакости с utf-8, я хочу резать знаками, а не словами. wordwrap - это прекрасно, но слова будут разной длины и объем блока текста будет очень колебаться и может вылазить за div...
1. Создайте массив из предложений т.е. разбивка по точке
2. Перебирайте массив создавая новый, проверяя количество знаков
В чём проблема?
1. Создайте массив из предложений т.е. разбивка по точке
2. Перебирайте массив создавая новый, проверяя количество знаков
В чём проблема?
, ага...
и если предложение больше и не влазит - я его обрубаю и у меня заполнено всего пол блока, т.к. предложение могло быть сложным, длинным...
Не гоните беса! Подскажите как по знакам считать... 😡😂
, ага...
и если предложение больше и не влазит - я его обрубаю и у меня заполнено всего пол блока, т.к. предложение могло быть сложным, длинным...
Не гоните беса! Подскажите как по знакам считать... 😡😂
Если оно больше, то создаётся следующий элемент массива и перебор идёт дальше. Вам, что нужно забить символами 100% из 100% дива? Фигнёй не майтесь.
---------- Добавлено 30.10.2013 в 18:37 ----------
Если хотите уж такую ювелирную точность, то создавайте по пробелам массив и опять же перебирайте и создавайте новый.
Я запутался...
Что важнее 100% корректно забить блок или начать новый не с буквы, а со слова?