кодировка — PHP: замена плохих символов

Более чем возможно, на это уже есть ответ, однако, поскольку кодирование далеко от моей сильной стороны, я не знаю, что искать, чтобы узнать.

По сути, у меня есть строка, которая содержит (что я бы назвал) «плохие» символы. Для контекста эта строка возвращается из ответа 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

Решение

Что случилось с ответом, который мне понравился? (было удалено).
Я думаю, что это опечатка, однако.

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

Другие решения

Других решений пока нет …