这很可能已经有了答案,但由于编码远不是我的强项,我真的不知道该搜索什么来找到答案。
本质上,我有一个包含(我称之为)"坏"字符的字符串。对于上下文,这个字符串是从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);