PHP удаляет дубликаты HTML тела и заголовка - PullRequest
1 голос
/ 16 марта 2011

У меня есть строка, которая отражается в текущем документе, однако я хотел бы вставить только содержимое в <body>, как я могу удалить эти теги, чтобы я получил действительный документ.

$string = '
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
        <!-- leave any tag within the body -->
    </body>
    </html>
';

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Title</title>
</head>
<body>
    <?php echo $string; // new valid content  ?>
    <!-- more content -->
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

с php.net;

<?php
function strip_selected_tags($str, $tags = array(), $stripContent = false)
{
    preg_match_all("/<([^>]+)>/i", $tags, $allTags, PREG_PATTERN_ORDER);
    foreach ($allTags[1] as $tag) {
        $replace = "%(<$tag.*?>)(.*?)(<\/$tag.*?>)%is";
        $replace2 = "%(<$tag.*?>)%is";
        echo $replace;
        if ($stripContent) {
            $str = preg_replace($replace,'',$str);
            $str = preg_replace($replace2,'',$str);
        }
            $str = preg_replace($replace,'${2}',$str);
            $str = preg_replace($replace2,'${2}',$str);
    }
    return $str;
}
?>
0 голосов
/ 16 марта 2011

Вы можете найти тег <body> и добавить 6, чтобы найти начальную точку, а затем найти </body>, чтобы найти конечную точку, а затем выполнить подстроку в строке.Вы должны убедиться, что у тега нет никаких атрибутов.Если вы действительно хотите убедиться, что это сделано правильно, найдите <body, а затем найдите следующий > и добавьте 1 для начальной точки.

...