Я взломал это некоторое время и просто не могу понять это правильно.
Как вы можете получить содержимое всех элементов скрипта, если количество элементов скрипта является переменным. Мой пример разметки выглядит так:
<div></div>
<iframe><iframe>
<script>xxxx</script>
<script>xxxx</script>
<script>xxxx</script>
То, что у меня есть до сих пор, работает только в том случае, если я сохраняю количество скриптов статичным, поэтому ясно, что я неправильно перебираю массив, но меня полностью бросает Документация по DOMXPath, как это сделать. Это то, что у меня есть до сих пор:
$dom = new DOMDocument();
$dom->preserveWhiteSpace = true;
@$dom->loadHtml($form_content);
$xpath = new DOMXPath($dom);
$items = $xpath->query('//script');
foreach ($items as $item) {
$scriptContents = $item->previousSibling->previousSibling->nodeValue . "\r\ n\r\n";
$scriptContents .= $item->previousSibling->nodeValue . "\r\n\r\n";
$scriptContents .= $item->nodeValue . "\r\n\r\n";
}
echo $scriptContents;
Как мне это сделать? Я некоторое время искал SO, но, похоже, могу применить решение, которое работает. Заранее спасибо - б
script
, ваш foreach будет повторяться 3 раза, если у вас есть 10 теговscript
, он будет повторяться 10 раз. Какое поведение, которое отличается от этого, вы видите? можете ли вы показать HTML, из-за которого это не соответствует действительности? Теперь мне не совсем понятно, что вы пытаетесь сделать с$scriptContents
, поскольку вы перезаписываете переменную с каждой итерацией. Возможно, это объясняет разницу между тем, что вы ожидаете, и тем, что происходит на самом деле. Мне кажется, что это будет отображать только три последних родственных узла последнего тега сценария. - person Mike Brant   schedule 24.07.2013HTML
изstring
тоже. - person The Alpha   schedule 24.07.2013$scriptContents
была проблема, мне нужно сначала объявить ее, а затем$scriptContents .= $item->previousSibling->nodeValue;
получит содержимое всех узлов скрипта, как и ожидалось. Если вы хотите написать это как ответ, я приму это. - person orionrush   schedule 24.07.2013