Me haces trampas
Me usas en una comilla simple y en otra comilla doble. Si en las dos usas comillas dobles o sencillas seguro que una de las dos no funciona.
$a =
'ha dicho "hola"
';
$b =
'l'arbre
';
$a = htmlspecialchars($a);
$b = htmlspecialchars($b);
echo '<input type="text" value="' . $a . '"><br />';
echo '<input type="text" value="' . $b . '">';
Lo que no se puede hacer es estar pendiente del tipo de valor que se recuperará de la base de datos para usar unas o otras.