@dillix

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

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

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

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:25
2000 руб./за проект
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект