Просмотр поста

.
ДоХтор
Добавлено: 30.10.2017 / 13:29
# Koenig (30.10.2017 / 10:39)
ДоХтор, утро.
Утро ))
кстати почему не массив тегов?
Потому что тогда целесообразнее будет использовать strip_tags(). А этот вариант я писал вообще для удаления одного тега (чтоб не перечислять множество оставляемых в strip_tags(), а просто написать один удаляемый).
Просто если я добавлю пробел к запятой, нужен будет trim
Не, trim() не нужна, я этот момент учёл на стороне regex'а ))

Ты можешь в песочнице пооперировать строкой с тегами: 'а , b r, p' - всё отработает корректно даже при таком корявом написании тегов, гг

Добавлено: 30.10.2017 / 13:33
О_о ... не работает она чё-то так, как задумано - вложенные теги не корректно удаляет. Вечером поковыряю её ещё.

Добавлено: 30.10.2017 / 13:40
Видать какой-то глюк в песочнице - перекрутил массу вариантов, всё корректно работает. Проверь, Димон, на локалке:
code (+/-)
$text = '<p>Текст1 <a href="qwer">Текст2</a></p><br />Текст3<hr>';

echo del_tags($text, 'a, b r, p , hr');


function del_tags($txt, $tag) {
    $tags = explode(',', $tag);
    
    do {
        $tag = array_shift($tags);
        $txt = preg_replace("~<($tag)[^>]*>|(?:</(?1)>)|<$tag\s?/?>~x", '', $txt);
    } while (!empty($tags));
    
    return $txt;
}

// Текст1 Текст2Текст3


Добавлено: 30.10.2017 / 20:42
Koenig, потестил скрипт - действительно, были погрешности. Во первых, надо было переменные экранировать, а во вторых - тут рекурсивная подмаска срабатывала не для всех альтернатив. В общем, подправил и тут, и в песочнице, теперь должно быть всё ок.
_______
UPD: нашёл ещё ошибки позже исправлю шаблон.