Как выглядит и работает фильтрация PHP POST & GET?
Как выглядит и работает фильтрация PHP POST & GET?Никак.
Я понимаю, что это утверждение не укладывается голове у человека, изучавшего пхп по видеокурсам, но это факт. 
Сами по себе НТТР запросы POST & GET никакой угрозы не несут и как-то заранее фильтровать их не надо.
Фильтровать вообще надо не по принципу "откуда", а по принципу "куда".
Данные надо форматировать в зависимости от того, куда они пойдут, а не откуда они пришли. SQL запросу абсолтно фиолетово, откуда взялась кавычка в данных - из GET, файла на диске, или из другой базы данных. Данные для SQL надо правильно форматировать не потому что они пришли из GET, а потому что они идут в SQL.
(При этом надо также понимать, что SQL запрос и база данных - это не одно и тоже. Базе тоже по барабану, что в ней лежит. Любое форматирование мы делаем только для SQL запроса, а в базе данные снова должны быть как есть).Я думал, что будут удаляться все кавычки и теги,а по факту они остаются. 
Если бы все думали, как ты, то ты бы не смог задать свой вопрос на Тостере. Потому что без кавычек и тегов он превратился бы в бессмыслицу. Как и куча любых других вопросов. 
Разумеется, "мусор" надо не удалять, а форматировать. Потому что это "мусор" только для SQL, а для человека это нужная информация, которая помогает читать текст. Не использовать же для этого регулярки? 
Нет, разумеется.
Использовать регулярки будет так же глупо, как и твою функцию.
Для того, чтобы поместить переменную в SQL запрос, надо использовать подстановки в подготовленных выражениях.  Запомни это предложение. Оно важнее всего, что ты до сих пор успел узнать про пхп. Хорошоенько запомни, ты должен это знать лучше, чем зовут маму с папой. И никогда не отступать от этого правила. Не важно - нужна тебе защита от SQL инъекций или не нужна, из POST-а ли пришли данные, или Господь бог тебе их надиктовал на горе Синайской - все равно всегда и везде только через подстановки. 
Поэтому.
1. Выкидываешь свою функцию на помойку. Единственное слово, которое там имеет там хоть какой-то смысл - это trim(). Ну так ты можешь вызывать её напрямую.
2. Судя по уровню кода и вопроса, для работы с бд ты используешь убогую mysqli. Поэтому забудь вообще про mysqli_query(), а все запросы, в которых используется хотя бы одна переменная, выполняешь только так$stmt = $conn->prepare("INSERT INTO tablitsa (login_name,email) VALUES (?,?)");
$stmt->bind_param("ss", $login, $email);
$stmt->execute();
Подробнее можешь почитать в интернете.
3. При выводе пользовательских данных в HTML, используешь функцию htmlspecialchars(). Надеюсь, к этому моменту ты уже понял главную мысль - важно не откуда пришли данные, а куда. Идут в хтмл? Отлично, форматируем их для хтмл.
trim - Эта функция возвращает строку str с удаленными из начала и конца строки пробелами.
stripslashes — Удаляет экранирование символов.
htmlspecialchars — Преобразует специальные символы в HTML-сущности<?php
function formatstr($str) 
{
    $str = trim($str);
    $str = stripslashes($str);
    $str = htmlspecialchars($str);
    return $str;
};

$login_name = formatstr('test');
print_r($login_name);

$login_name2 = formatstr('<p>test</p>');
print_r($login_name2);

$login_name3 = formatstr('<p class="test">test</p>');
print_r($login_name3);
?>
результатtest

&lt;p&gt;test&lt;/p&gt;

&lt;p class=&quot;test&quot;&gt;test&lt;/p&gt;