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

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

Друзья, подскажите, как с помощью xpath добраться до середины текста, оформленного абзацами? implode-explode метод не подходит, так как некторые абзацы лежат в теге blockquote, их не нужно учитывать. Получается в качестве аргумента в //p[i] xpath надо вместо i подставить сумму всех элементов p (параграф), исключая те что лежат в теге blockquote и поделить пополам, но там еще может получиться нецелый аргумет, его еще и надо округлить...
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 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 до среднего абзаца, остальное сам осилю.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы