Работа с абзаца в тексте

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Подскажите пожалуйста, как удалить текст, который находится в последнем абзаце. Количество абзацев - не известно. Абзацы находятся в тегах
PHP:
<p> текст </p>
 
В качестве примера можно использовать такой код:
PHP:
$Text ="<p>Здесь</p><p>ваш</p><p>текст</p><p>со</p><p>всеми</p><p>абзацами</p>";
$NText = substr($Text, 0, strrpos($Text, '<p>'));

P.S. Теперь работает. Днем, в спешке перемудрил, сорри.
 
Не работает почему-то...
 
попробуй эту строку
PHP:
$NText = substr($Text, 0, strrpos($Text, '<p>'));
заменить на эту
PHP:
$NText = substr($Text, 0, stripos($Text, '<p>'));
 
попробуй эту строку
PHP:
$NText = substr($Text, 0, strrpos($Text, '<p>'));
заменить на эту
PHP:
$NText = substr($Text, 0, stripos($Text, '<p>'));


Arqin, код, приведенный мной выше, 100% рабочий и выполняет то, что необходимо ТС. Если вы обратили внимание, то я отредактировал свой пост, так как изначально допустил небольшую ошибку. Я решил что лучше будет отредактировать мой первый пост, чем создавать еще один, поэтому и внес исправления в нем.
На счет вашего совета - stripos() это аналог strpos(), только поиск ведется регистронезависимый.
Применимо к заданному ТС вопросу stripos() не даст необходимого результата, так как искать необходимо последнее вхождение, а не первое.
В данном случае необходимо искать тег, поэтому я использовал функцию strrpos(), хотя для особых извращений можно ее заменить на strripos().
 
О боже, неужели кто-то наконец-то не стал пихать регулярные выражения в задачу, с которой легко справятся встроенные функции?
Пардон, накипело, stealthdebuger, мое вам почтение за людское решение проблемы, а то тут скоро уже при необходимости вырезать все до первого пробела будут пользоваться регулярными выражениями.
 
Отсутствие регулярных выражений может быть и хорошо, но решает ли код поставленную задачу? Разве в ее условиях было сказано, что после завершающего последний абзац тега </p> нет никакого текста? Зачем же его обрезали?

а потому

PHP:
$text = preg_replace('#<p>.+</p>(.*)$#sUim', '\\1', $text);

P.S. Полностью поддерживаю идею о том, что регулярный выражения надо использовать только в случае необходимости и не уверен, что они нужны в данном случае
 
О боже, неужели кто-то наконец-то не стал пихать регулярные выражения в задачу, с которой легко справятся встроенные функции?
Пардон, накипело, stealthdebuger, мое вам почтение за людское решение проблемы, а то тут скоро уже при необходимости вырезать все до первого пробела будут пользоваться регулярными выражениями.
И чем, пардон, не устраивает решения на регулярках? Я согласен, что в PHP регулярки прикручены через жопуспециальную функцию, но тем не менее, это все равно удобнее, чем расписывать множество функций.

Разве в ее условиях было сказано, что после завершающего последний абзац тега </p> нет никакого текста? Зачем же его обрезали?

Все верно. Только инструментом еще надо уметь пользоватся, приведенный код не будет работать правильно.
Вот так верно
PHP:
$text = preg_replace('{^.*\K<p>.*?</p>}is', '', $text);

Добавлено через 6 минут
а то тут скоро уже при необходимости вырезать все до первого пробела будут пользоваться регулярными выражениями.
Собственно всегда так и делаю, как освоил инструмент. Чего и вам советую.
 
О боже, неужели кто-то наконец-то не стал пихать регулярные выражения в задачу, с которой легко справятся встроенные функции?
Пардон, накипело, stealthdebuger, мое вам почтение за людское решение проблемы, а то тут скоро уже при необходимости вырезать все до первого пробела будут пользоваться регулярными выражениями.
Свое "накипело" оставь при себе, а то не дай бог получишь бан за набор постов, а зарегистрироваться обратно уже нельзя ;). Грамотно составленное регулярное выражение будет работать грамотно быстро, к тому же оно универсально, в отличие от узкоспециализированных строковых функций.
 
Просто регулярные выражения, по крайней мере у нас (Россия, Украина, и т.п.) перестали быть обычным инструментом, а стали: "Смотри, как я умею".
Допускаю, что если ТС расширит свой вопрос, окажется, что проще использовать именно регулярки, но часто и здесь на форуме их используют абсолютно не оправдано, да причем через задницу написанные.
Я видел в какой-то из CMS, как автор обрезает последнюю запятую в строке при помощи регулярного выражения.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху