PHP:替换坏字符


PHP: replacing bad characters

这很可能已经有了答案,但由于编码远不是我的强项,我真的不知道该搜索什么来找到答案。

本质上,我有一个包含(我称之为)"坏"字符的字符串。对于上下文,这个字符串是从cURL响应返回的。示例:

$bad_str = "Sunday’s";

问题:如何将它们换成可读性更强的替代品

如果我知道这类问题被称为什么,或者它对应的编码类型,这会容易得多

  • 从HTML PHP联系人表单中删除错误字符
  • PHP编码:删除一些坏字符

我尝试创建一个交换映射并在其上运行preg_replace_callback,即:

$encoding_swapouts_map = array(
    '’' => "'",
    'é' => 'é',
    '–' => '-',
    '£' => '£'
);
$bad_str = preg_replace_callback(
    $ptn = '/'.implode('|', array_keys($encoding_swapouts_map)).'/i',
    function($match) use ($encoding_swapouts_map) {
        return $encoding_swapouts_map[$match[0]];
    },
    $str
);

这似乎与坏字符不匹配,因此永远不会调用回调。有趣的是,当打印出来时,$ptn显示出一些突变:

 /’|é|–|£/i

提前谢谢。

我喜欢的答案发生了什么?(已删除)
然而,我认为它有一个拼写错误。

  $text = "Sunday’s";
  $bad = array("’","é","–","£");
  $good = array("'","é","-","£");
  $newtext = str_replace($bad, $good, $text);