# 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: нашёл ещё ошибки