Я должен предположить, что вы не хотите использовать шестнадцатеричные символы вместо знаков препинания, а только HTML-объекты.Имейте в виду, что str_replace () при вызове с массивами будет проходить по строке несколько раз, заменяя, таким образом, символ ";"в "{
" также!
Ваш опубликованный код бесполезен для замены знаков препинания.
используйте strtr () с массивами, у него нет недостатка str_replace ().
$aReplacements = array(',' => ',', '.' => '.'); //todo: complete the array
$sText = strtr($sText, $aReplacements);