PHP - Loswerden von geschweiften Apostrophe
Frage
Ich versuche, von geschweiften Apostrophe loszuwerden (Einer von irgendeiner Art von Rich-Text-doc eingefügt, stelle ich mich) und ich scheine eine Straßensperre zu schlagen. Der folgende Code ist nicht für mich arbeiten.
$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'.
Als ich die Et-Zeichen aus meinem $ Such-Array entfernen, nimmt die ersetzen Ort aber, natürlich, wird die Arbeit erledigt nicht erhalten, da das Und-Zeichen in der Zeichenfolge gelassen wird. Warum ist str_replace andernfalls, wenn es über das Et-Zeichen kommt?
Lösung
Warum dies nicht nur tun:
$word = htmlentities(str_replace($search, $replace, $word), ENT_QUOTES);
Andere Tipps
Damit mir die Dinge gut funktionieren zu erhalten, brauchte ich etwas ein wenig robuster als Beispiel @cletus angelegt. Hier ist, was für mich gearbeitet:
// String full of rich characters
$string = $_POST['annoying_characters'];
// Replace "rich" entities with standard text ones
$search = array(
'“', // 1. Left Double Quotation Mark “
'”', // 2. Right Double Quotation Mark ”
'‘', // 3. Left Single Quotation Mark ‘
'’', // 4. Right Single Quotation Mark ’
''', // 5. Normal Single Quotation Mark '
'&', // 6. Ampersand &
'"', // 7. Normal Double Qoute
'<', // 8. Less Than <
'>' // 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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow