Если длина разная, значит, HTMLPurifier удалил опасные элементы у этой строки (теги, атрибуты). Значит, строка была опасная.
Нет, это значит, что он удалил то, что Вы его попросили удалить. Возможно теги какие-то, возможно еще что-то. В Вашем случае он еще и автозамену делает.
На самом деле сложно отследить однозначно вредоносную строку. В примитивном варианте можно проверять на наличие тега
<script>
, но вариантов XSS много и обычно ставится задача избегать их, а не выявлять однозначно. Такая задача ближе к реальности. Так как ряд методов успешно предотвращают, но не выявляют.
Вот чтиво:
https://habr.com/company/pentestit/blog/211494/