Я не знаю, можете ли вы прочитать JS JQuery, но это то, что я хотел бы сделать на стороне сервера, а не на стороне клиента: $('p').wrapInner('<span class="contentsInP" />');
Я хотел бы взять все существующие абзацы со страницы и обернуть их содержимое в новом диапазоне с определенным классом.PHP XPath как обернуть содержимое p в промежутке
К счастью, все мои документы HTML5 в XML вкус и действительно так, что в PHP я могу сделать это (упрощенный):
$xml=new DOMDocument();
$xml->loadXML($html);
$xpath = new DOMXPath($xml);
// How to go on in here to wrap my p's?
$output=$xml->saveXML();
Как получить РНР DOMXPath делать свою обертку?
EDIT: повозился с этим на основе комментария, но не могли заставить его работать
// based on http://stackoverflow.com/questions/8426391/wrap-all-images-with-a-div-using-domdocument
$xml=new DOMDocument();
$xml->loadXML(utf8_encode($temp));
$xpath = new DOMXPath($xml);
//Create new wrapper div
$new_span = $xml->createElement('span');
$new_span->setAttribute('class','contentsInP');
$ps = $xml->getElementsByTagName('p');
//Find all p
//Iterate though p
foreach ($ps AS $p) {
//Clone our created span
$new_span_clone = $new_span->cloneNode();
//Replace p with this wrapper span
$p->parentNode->replaceChild($new_span_clone,$p);
//Append the p's contents to wrapper span
// THIS IS THE PROBLEM RIGHT NOW:
$new_span_clone->appendChild($p);
}
$temp=$xml->saveXML();
выше оборачивает р в пролете, но мне нужен пролет обертывания содержимого P, сохраняя при этом р вокруг пролета ... Кроме того, выше вышло, если p имеет класс, то он не будет затронут.
связаны: http://stackoverflow.com/questions/8426391/wrap-all-images-with- a-div-using-domdocument – har07
@ har07 теперь с этим примером работает в течение часа, но не смог заставить его работать для содержимого p - я добавил код до тех пор, пока не дошел до вопроса ... –