Forum Webscript.Ru

Программирование => PHP => Тема начата: Ardzhan от 21 Июля 2004, 10:16:45

Название: Удаление атрибутов тега!
Отправлено: Ardzhan от 21 Июля 2004, 10:16:45
Вообщем такая проблема. Сделал регулярное выражение, которое удаляет атрибуты из тегов:

preg_replace("/(<[A-Z]+?)\\\\s(.*?)+(>{1}?)/is", "$1$3", $ok);

Как сделать, чтоб оно не удаляло атрибуты colspan и rawspan.
Название: Удаление атрибутов тега!
Отправлено: tserbis от 22 Июля 2004, 11:37:59
Неидеальная ф-я удаления атрибутов (кроме href) из (приводил уже, вроде, как-то...), может, поможет:

function fncStripAttrsExceptHREF($strText) {

    $strRegExp1 = \'~
        <\\\\s*a\\\\s+    # начало тэга

        [^>]*       # мусор до href

        href\\\\s*=\\\\s* # начало атрибута href
        ([\\\\\\\\\'"]?)    # опциональные кавычки
        (\\\\S+)       # значение атрибута
        \\\\1          # такие же кавычки

        [^>]*       # мусор после href
        >           # конец тэга
    ~ix\';

    $strRegExp2 = \'~
        on(
            (dbl)?click                     |
            mouse(down|up|over|move|out)    |
            key(press|down|up)              |
            focus                           |
            blur
        )
    ~ix\';

    return
        preg_replace(
            $strRegExp2,
            \'BAD\',
            preg_replace(
                $strRegExp1,
                \'
\',
                $strText
            )
        );

} # function fncStripAttrsExceptHREF
Название: Удаление атрибутов тега!
Отправлено: tserbis от 22 Июля 2004, 11:49:32
Здесь
перед 2
должен быть \\

[off]мне не удалось это заставить показывать[/off]
Название: Удаление атрибутов тега!
Отправлено: Ardzhan от 22 Июля 2004, 11:53:13
млин, а если верстальщик извратится и сделает что-то типа:
..
Уже такая регулярка не сработает :(
Название: Удаление атрибутов тега!
Отправлено: tserbis от 22 Июля 2004, 12:02:06
Ardzhan
Во-первых, - ты бы попробовал раньше:
echo htmlspecialchars(fncStripAttrsExceptHREF(\'
..\'), ENT_QUOTES);
Во-вторых - в любом случае она не идеальная, я же писал...