У меня есть XPATH запрос:Получить все HREFS от конкретного запроса XPATH
$q = $xpath->query("//p[@id='v{$versenumber}']/following-sibling::div[@class='admonition']");
, который работает хорошо, очень хорошо на самом деле. И я, используя следующие извлечь HTML я получаю от него:
$saveHTML = $dom->saveHTML($q->item(0));
Однако внутри этого запроса у меня есть HREFS, что я хочу, чтобы заменить чем-то другим. У меня возникают проблемы с фактическим признанием hrefs. Я думал о том, что другой вопрос будет таким же, но с /a
в конце, но это ничего не вернуло.
Я бы думал, что я мог бы получить доступ к ним, как это:
$x = $q->item(0)->getElementByTagName('a');
Но то не похоже на работу либо :(Что я делаю неправильно
обновление
? HTML Я хочу разобрать:
<p id="v1"><span class="verseref">1</span></p>
<div class="notes">
<p class="first">Notes</p>
<p class="last">Paragraph</p>
</div>
<div class="admonition">
<p class="last">HTML with <a href='foobar'>inside it</a>. I want to get all href attributes from here.</p>
</div>
И используя вышеприведенный запрос, я могу получить текст в порядке, просто я хочу иметь дело с каждым атрибутом «href», поскольку они ошибочны, и мне нужно их изменить. Поэтому я имею дело с каждым <div class'admonition'>
отдельно, и все hrefs внутри них.
Однако с помощью:
$q = $xpath->query("//p[@id='v{$versenumber}']/following-sibling::div[@class='admonition']//a/@href");
Я, кажется, получают огромное количество HREF в течение одного пункта, где есть только один.
../../ga/ch1/#v1
#v6
#v5
#v6
../../mr/ch16/#v20
../ch12/
../../heb/ch13/#v9
../ch12/
../ch3/#v1
../../lu/ch1/#v6
../../1jo/ch1/#v8
../../1jo/ch1/#v10
../../1jo/ch1/#v7
../../1jo/ch1/#v9
#v1
../../eph/ch4/#v13
../../ro/ch14/
../../ro/ch14/#v1
../ch5/
../ch6/
../ch7/
../ch8/
../ch11/
../ch12/
../ch15/
../../ro/ch14/
#v12
../ch3/#v4
../ch15/#v24
../../eph/ch5/#v17
../../ro/ch8/#v6
../../../ot/ge/ch11/#v3
../../../ot/ps/ch133/
../../../ot/jer/ch32/#v39
../../ac/ch4/#v32
../../ro/ch12/#v16
../../ro/ch15/#v5
../../php/ch1/#v27
../../php/ch2/#v1
../../1th/ch5/#v13
../../jas/ch3/#v13
../../1pe/ch3/#v8
../../eph/ch4/#v13
../ch16/#v15
../ch16/#v17
../ch16/#v24
../../ac/ch18/#v12
../ch16/#v15
../ch16/#v17
../../ac/ch11/#v18
../../mt/ch28/#v19
../../mt/ch26/#v2
../ch2/#v14
../../ro/ch1/#v16
../../ro/ch1/#v16
../../2co/ch4/#v3
#v17
../../ac/ch20/#v30
#v18
../../../ot/isa/ch29/#v14
../../../ot/isa/ch29/#v14
../../../ot/isa/ch29/#v13
../ch2/#v14
../../ro/ch10/#v10
#v21
#v26
../ch2/
#v18
#v11
../../lu/ch6/#v38
../../../ot/ps/ch14/#v1
../../../ot/ps/ch53/#v1
../../col/ch2/#v3
#v23
#v18
../../ac/ch5/#v34
../../ac/ch26/#v24
../../ga/ch2/#v1
#v26
#v25
../../ac/ch24/#v25
../../2co/ch10/#v12
../../ro/ch7/#v18
#v30
../../ro/ch7/#v18
../../joh/ch8/#v44
../../mt/ch26/#v41
../../ro/ch8/#v18
#v26
../../../ot/isa/ch42/#v8
../../joh/ch3/#v3
../../../ot/pr/ch3/#v6
../../ro/ch8/#v23
#v26
..Which должен быть весь документ, в противном случае я не знаю, где он получает все эти hrefs из.
могли бы вы предоставить фрагмент кода в HTML, который вы пытаетесь разобрать? Что-то вроде '// p [@ id = 'v {$ versenumber}']/next-sibling :: div [@ class = 'admonition'] // a/@ href' не выбирает то, что вы ищете ? – Robin
Я только что попробовал это. И я получаю значения, но несколько значений, где должен быть только один href в блоке текста. Казалось бы, это может быть ссылка на весь документ вперед или что-то в этом роде? – Chud37
'next-sibling :: div [@ class = 'admonition']' будет выбирать ВСЕ следующие div с классом, равным 'admonition', а не только следующим. Наверное, ты уже это знаешь, но здесь сложно получить точную идею. Можете ли вы предоставить часть того, что вы хотите проанализировать, а также то, что является результатом вашего решения и что вы хотите? – Robin