Оглавление скрыть


Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Удалить все атрибуты у тегов (PHP)

В PHP, удалить все атрибуты тегов HTML-кода можно при помощи функции preg_replace(), используя регулярное выражение: #(</?\w+)(?:\s(?:[^<>/]|/[^<>])*)?(/?>)#ui

Удалить все атрибуты

Например есть файл test.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="keywords" content="атрибуты, удалыть, тег, php, регулярное выражение, pcre">
    <meta name="description"
         content="Удалить все атрибуты у тегов при помощи регулярного выражения">

    <title>Вырезать все атрибуты у тегов (PHP)</title>
    <style>
        .big {
            font-size: 20px;
        }

        .box {
            border: green 1px solid;
            padding: 10px;
        }
    
</style>
</head>
<body onload="console.log('test')">

<table border="1">
    <tr>
        <td colspan="2">PCRE</td>
    </tr>

    <tr>
        <td rowspan="2">Row span здесь был когда-то</td>
        <td>Тег TD без атрибутов</td>
    </tr>

    <tr>
        <td style="color: red;" class="big">Здесь были какие-то стили и класс...</td>
    </tr>
</table>

<p style="font-size: 16px; font-weight: bold;" id="First_p">Lorem ipsum...</p>

<div class="box">Box class</div>

</body>
</html>

Необходимо удалить все атрибуты у тегов.

1
2
3
4
5
6
7
<?php

$html 
file_get_contents('test.html');

$html_no_attr preg_replace("#(</?\w+)(?:\s(?:[^<>/]|/[^<>])*)?(/?>)#ui"'$1$2'$html);

echo 
$html_no_attr;

В результате будет выведен следующий HTML-код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
<head>
    <meta>
    <meta>
    <meta>
    <title>Вырезать все атрибуты у тегов (PHP)</title>
    <style>
        .big {
            font-size: 20px;
        }

        .box {
            border: green 1px solid;
            padding: 10px;
        }
    
</style>
</head>
<body>

<table>
    <tr>
        <td>PCRE</td>
    </tr>

    <tr>
        <td>Row span здесь был когда-то</td>
        <td>Тег TD без атрибутов</td>
    </tr>

    <tr>
        <td>Здесь были какие-то стили и класс...</td>
    </tr>
</table>

<p>Lorem ipsum...</p>

<div>Box class</div>

</body>
</html>
Опубликовано: 26 ноября 2013  ·  Автор: Артём Фёдоров  ·  6266 просмотров

Категория

ГлавнаяПрограммированиеPHPРегулярные выраженияУдалить все атрибуты у тегов (PHP)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Анжела Сапина, вообще-то функция strip_tags для удаления тегов, а не атрибутов.
Артём Фёдоров · 3 года назад
http://php.net/manual/ru/function.strip-tags.php
Проще сделать через strip_tags($html);
Анжела Сапина · 3 года назад
Регулярные выражения, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания