- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно вывести из поля в базе данных текст в 400 символов , думаю если использовать substr и в конце символов он попадет к примеру на ссылку то он ее обрежет , вот как правильно вывести чтобы если что он остановил свой вывод текста в пределах нужного мне количества , но не задевая html теги.
Вот в gms обычно ставится какой то атрибут и он вывод до него , В принципе можно и так хотя я не знаю как это сделано , но хотелось бы чтобы автоматически было
regexp. реж теги, воруй, убивай, грабь караваны
Я бы сначала вырезал все тэги (strip_tags), а потом уже брал первые символы.
Чтоб на полуслове не обрезать - найти позицию (strpos), к примеру, пробела после 400 символа.
p.s. Если тэги нужны - чуть сложнее..
Пример текста в HTML будет или гадать на кофейной гуще?
0. Отвалидизировать с помощью tidy HTML вычистив лишнее.
1. Разбить на слова по тегам (начало тега '<')
2. полученный массив исключая теги разбить по проблеьным символам.
3. склеять с подсчетом длины результата и без учета тегов.
4. пропустить через tidy c валидацией чтобы закрыл порушенные теги
Ну а вообще прежде чем делать присмотрелся бы к задаче. Вполне возможно что нашел бы более приемлемое решение не программно, а организационно.
Я б разбил по словам (просто explode через пробел), взял столько сколько нужно, чтобы уложиться в длинну, если что то еще вылезит так и справить а и правда не устраивать гадания
А что выкладывать. Ну ладно вот текст
pellentesque at, placerat non neque. Nulla varius justo sit amet nisl rutrum eu vulputate ligula eleifend. Pellentesque nec erat cursus enim mattis tempor volutpat eget ante. Morbi laoreet nibh in quam viverra ut pellentesque nulla sagittis. Duis porttitor nisi non turpis luctus ac semper ligula sodales
<a href="#">ссылка2</a>
К примеру получилось так что количество символов остановилось прям по середине второй ссылки , как ее тоже захватит в текст и остановится после нее
---------- Добавлено 29.07.2012 в 17:16 ----------
Убирать html теги в тексте не вариант
ИМХО не реал.
---------- Добавлено 29.07.2012 в 20:41 ----------
А не, всё ок, есть такая вот фигня.
function substr_html($string, $length)
{
$count = 0;
/*
* $state = 0 - normal text
* $state = 1 - in HTML tag
* $state = 2 - in HTML entity
*/
$state = 0;
for ($i = 0; $i < strlen($string); $i++) {
$char = $string[$i];
if ($char == '<') {
$state = 1;
} else if ($char == '&') {
$state = 2;
$count++;
} else if ($char == ';') {
$state = 0;
} else if ($char == '>') {
$state = 0;
} else if ($state === 0) {
$count++;
}
if ($count === $length) {
return substr($string, 0, $i + 1);
}
}
return $string;
}
А что выкладывать. Ну ладно вот текст
К примеру получилось так что количество символов остановилось прям по середине второй ссылки , как ее тоже захватит в текст и остановится после нее
---------- Добавлено 29.07.2012 в 17:16 ----------
Убирать html теги в тексте не вариант
Ну чисто для Вашего примера можно использовать что-то вроде этого
Однако достаточно <p> <a href=""></a></p> или таблиц или списков и уже привет...
По настоящему надо отрезать сколько нужно, а потом все меньше и меньше, каждый раз проверяя на валидность, пока не дойдете до валидного html содержания.
ИМХО не реал.А не, всё ок, есть такая вот фигня.
Не лучший вариант
echo substr_html('<a href="">text</a>',3);
выводит <a href="">tex
ну явно там не будет 3-и стоять :)
Там не в числе суть, а в том что если "обрезание" попадет между открывающим и закрывающим тэгом <a> (каковые у ТС в примере есть), то в вырезаном куске останется только открывающий тэг, что не айс.
ну явно там не будет 3-и стоять :)
если "обрезание" попадет между открывающим и закрывающим тэгом <a> .
Для этого много лет назад в состав php5 был введен tidy. он все что надо закроет и отвалидизирует, до кучи еще и почистит от мусора.
+ дополнительная рег-проверка на то чтобы срезать пустой тег в конце.