This:
$newBody = str_replace("​", "", $newBody);
presumes the text is HTML entity encoded. This:
$newBody = str_replace("\xE2\x80\x8C", "", $newBody);
should work if the offending characters are not encoded, but matches the wrong character (0xe2808c). To match the same character as #8203; you need 0xe2808b:
$newBody = str_replace("\xE2\x80\x8B", "", $newBody);