Considering you only want to replace a few specific and well identified characters, I would go for str_replace
with an array : you obviously don't need the heavy artillery regex will bring you ;-)
And if you encounter some other special characters (damn copy-paste from word...), you can just add them to that array whenever is necessary / whenever they are identified.
EDIT : the best answer I can give to your comment is probably this link : Convert Smart Quotes with PHP
And the associated code (quoting that page) :
function convert_smart_quotes($string)
{
$search = array(chr(145),
chr(146),
chr(147),
chr(148),
chr(151));
$replace = array("'",
"'",
'"',
'"',
'-');
return str_replace($search, $replace, $string);
}
(I don't have MS word on this computer, so I can't test by myself)
I don't remember exactly what we used at work (I was not the one having to deal with that kind of input), but it was the same kind of stuff...