PHP:替换坏人物

时间:2015-03-24 14:41:05

标签: php encoding escaping character

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

基本上,我有一个字符串包含(我会称之为)'坏'字符。对于上下文,此字符串将从cURL响应返回。例如:

$bad_str = "Sunday’s";

问题:如何将这些替换为更具可读性的替代品?

如果我知道这类问题被调用了什么,或者它对应的是什么类型的编码,这将会容易得多。我读过:

我尝试创建一个交换地图并在其上运行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

提前致谢。

1 个答案:

答案 0 :(得分:-1)

我喜欢的答案怎么了? (它被删除了) 不过,我认为它有一个错字。

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