PHP – избавление от курчавых апострофов

Я пытаюсь избавиться от кудрявых апострофов (которые, на мой взгляд, вставлены из какого-то богатого текстового документа), и я, кажется, попадаю в дорожный блок. Код ниже не работает для меня.

$word = "Today's"; $search = array('„', '“', '’'); $replace = array('"', '"', "'"); $word = str_replace($search, $replace, htmlentities($word, ENT_QUOTES)); What I end up with is $word containing 'Today’s'. 

Когда я удаляю амперсанды из массива $ search, происходит замена, но это, очевидно, не будет выполняться, поскольку амперсанд остается в строке. Почему str_replace терпит неудачу, когда он сталкивается с амперсандами?

Почему бы просто не сделать это:

 $word = htmlentities(str_replace($search, $replace, $word), ENT_QUOTES); 

?

Для того, чтобы я мог нормально работать, мне нужно было что-то более прочное, чем пример, приведенный на рисунке @cletus. Вот то, что сработало для меня:

 // String full of rich characters $string = $_POST['annoying_characters']; // Replace "rich" entities with standard text ones $search = array( '&#8220;', // 1. Left Double Quotation Mark “ '&#8221;', // 2. Right Double Quotation Mark ” '&#8216;', // 3. Left Single Quotation Mark ' '&#8217;', // 4. Right Single Quotation Mark ' '&#039;', // 5. Normal Single Quotation Mark ' '&amp;', // 6. Ampersand & '&quot;', // 7. Normal Double Qoute '&lt;', // 8. Less Than < '&gt;' // 9. Greater Than > ); $replace = array( '"', // 1 '"', // 2 "'", // 3 "'", // 4 "'", // 5 "'", // 6 '"', // 7 "<", // 8 ">" // 9 ); // Fix the String $fixed_string = htmlspecialchars($string, ENT_QUOTES); $fixed_string = str_replace($search, $replace, $fixed_string);