PHP. Удалить содержимое заданных блоков в HTML-документе.

12
Dimoha
На сайте с 15.06.2009
Offline
53
#11
Drivelink (http://drivelink.ru/for/support/) - автоматическая проверка ссылок
[Удален]
#12

упс.. недосмотрел.. То, что я писал, было написано для javascript. Впрочем, оно актуально и для php5+DOM

Dimoha
На сайте с 15.06.2009
Offline
53
#13
ahimaskrasavin:
упс.. недосмотрел.. То, что я писал, было написано для javascript. Впрочем, оно актуально и для php5+DOM

дак уже давно написали что dom надо использовать.вроде никто не спорил

mfl
На сайте с 16.10.2006
Offline
134
mfl
#14

Решил задачу:

<?php

$content = '<body><div class="a1">текст1<div class="a2">текст2<div class="a1">текст3</div>текст4</div>текст5</div><div class="a4">bla</div></body>';

while(preg_match_all('~<div(([^<>]*)>((?!</?div).)*</)div>~Usi', $content, $v)) { // ищем блоки без детей

foreach($v[2] as $key=>$val) {
if($val == ' class="a2"') $content = str_replace($v[0][$key], '', $content); // полностью удаляем блок
else $content = str_replace($v[0][$key], '<qwerty'.$v[1][$key].'qwerty>', $content); // заменяем теги <div>
}

}

// возвращаем теги <div>
$content = str_replace('<qwerty', '<div', $content);
$content = str_replace('qwerty>', 'div>', $content);

echo htmlspecialchars($content);

?>
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий