Con la función htmlspecialchars y usando esta combinación de comillas simples y dobles, me ha funcionado la prueba. A ver si te sirve:
Código PHP:
$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 . '">';