Задать вопрос
@dillix

Как через xpath добраться до середины текста на php?

Друзья, подскажите, как с помощью xpath добраться до середины текста, оформленного абзацами? implode-explode метод не подходит, так как некторые абзацы лежат в теге blockquote, их не нужно учитывать. Получается в качестве аргумента в //p[i] xpath надо вместо i подставить сумму всех элементов p (параграф), исключая те что лежат в теге blockquote и поделить пополам, но там еще может получиться нецелый аргумет, его еще и надо округлить...
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
glebovgin
@glebovgin
Full Stack Web Developer
Так вы же почти все сами сделали. Чтобы не брать те абзацы, что внутри blockquote, надо ваш же xpath немного преобразовать:
//p[position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5)][not(parent::blockquote)]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@MadridianFox
Web-программист, многостаночник
XPath - способ добраться до элемента, но не редактирования DOM.
Ответ написан
Комментировать
@dillix Автор вопроса
Иван Корюков ну на php можно в DOM с его помощью добавить элемент, вот небольшой пример:
$xml = new DomDocument();
$xml->preserveWhitespace = false;
$xml->load('contacts.xml');
$xpath = new DOMXPath($xml);
$eva = $xpath->query('/contacts/person[.="Eva"]')->item(0);
$john = $xml->createElement('person', 'John');
$eva->parentNode->insertBefore($john, $eva->nextSibling);


Мне вот надо добраться через xpath до среднего абзаца, остальное сам осилю.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽