Вы либо хотите оставить кавычки в покое при дезинфекции строки (если вас это устраивает), установив параметр FILTER_FLAG_NO_ENCODE_QUOTES
:
$name = filter_var($name, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$length = mb_strlen($name); // 14
Или вы можете преобразовать сгенерированные HTML сущности перед вычислением длины, используя html_entity_decode
и передавая флаг ENT_QUOTES
:
$name = filter_var($name, FILTER_SANITIZE_STRING);
$length = mb_strlen(html_entity_decode($name, ENT_QUOTES, 'UTF-8')); // 14
Обратите внимание, что в этом случае strlen
даст тот же результат.