Ever tried to insert special characters e.g. German ,,, with this function?
Or to mix normal text with entities?
In my scripts I use a function like this:
$translateSpecial = array(
"" => "#228",
"" => "#252",
"" => "#246",
"" => "#196",
"" => "#220",
"" => "#214",
"" => "#223"
);
$buffer = "";
for($i = 0; $i < strlen($value); $i++)
{
  if(!$translateSpecial[$value{$i}])
    $buffer .= $value{$i};
  else
  {
    $node->append_child($xmldoc->create_text_node($buffer));
    $buffer = "";
    $node->append_child($xmldoc->
    create_entity_reference($translateSpecial[$value{$i}]));
  }
}
$node->append_child($xmldoc->create_text_node($buffer));