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

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 15 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Здравствуйте.
    Подскажите пожалуйста, как удалить текст, который находится в последнем абзаце. Количество абзацев - не известно. Абзацы находятся в тегах
    PHP:
    <pтекст </p>
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    В качестве примера можно использовать такой код:
    PHP:
    $Text ="<p>Здесь</p><p>ваш</p><p>текст</p><p>со</p><p>всеми</p><p>абзацами</p>";
    $NText substr($Text0strrpos($Text'<p>'));
    P.S. Теперь работает. Днем, в спешке перемудрил, сорри.
     
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Не работает почему-то...
     
  4. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    попробуй эту строку
    PHP:
    $NText substr($Text0strrpos($Text'<p>')); 
    заменить на эту
    PHP:
    $NText substr($Text0stripos($Text'<p>')); 
     
  5. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407

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

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    О боже, неужели кто-то наконец-то не стал пихать регулярные выражения в задачу, с которой легко справятся встроенные функции?
    Пардон, накипело, stealthdebuger, мое вам почтение за людское решение проблемы, а то тут скоро уже при необходимости вырезать все до первого пробела будут пользоваться регулярными выражениями.
     
  7. nittis

    nittis Постоялец

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

    а потому

    PHP:
    $text preg_replace('#<p>.+</p>(.*)$#sUim''\\1'$text);
    P.S. Полностью поддерживаю идею о том, что регулярный выражения надо использовать только в случае необходимости и не уверен, что они нужны в данном случае
     
  8. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    И чем, пардон, не устраивает решения на регулярках? Я согласен, что в PHP регулярки прикручены через жопуспециальную функцию, но тем не менее, это все равно удобнее, чем расписывать множество функций.

    Все верно. Только инструментом еще надо уметь пользоватся, приведенный код не будет работать правильно.
    Вот так верно
    PHP:
    $text preg_replace('{^.*\K<p>.*?</p>}is'''$text);  
    Добавлено через 6 минут
    Собственно всегда так и делаю, как освоил инструмент. Чего и вам советую.
     
    nittis нравится это.
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Свое "накипело" оставь при себе, а то не дай бог получишь бан за набор постов, а зарегистрироваться обратно уже нельзя ;). Грамотно составленное регулярное выражение будет работать грамотно быстро, к тому же оно универсально, в отличие от узкоспециализированных строковых функций.
     
  10. Eihwaz

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    Просто регулярные выражения, по крайней мере у нас (Россия, Украина, и т.п.) перестали быть обычным инструментом, а стали: "Смотри, как я умею".
    Допускаю, что если ТС расширит свой вопрос, окажется, что проще использовать именно регулярки, но часто и здесь на форуме их используют абсолютно не оправдано, да причем через задницу написанные.
    Я видел в какой-то из CMS, как автор обрезает последнюю запятую в строке при помощи регулярного выражения.
     
Статус темы:
Закрыта.