Convertir des guillemets intelligents en PHP : une solution exhaustive
Les guillemets intelligents sont des marques typographiques utilisées pour indiquer un discours direct ou des citations dans un texte. Ils peuvent améliorer la lisibilité et ajouter des nuances au contenu écrit. Cependant, travailler avec des guillemets intelligents dans des langages de programmation comme PHP nécessite une manipulation appropriée pour garantir un affichage et une conversion précis.
Énoncé du problème
La fonction PHP fournie vise à convertir différents types des guillemets intelligents aux guillemets réguliers (directs). Cependant, il lui manque une prise en charge complète pour gérer toutes les variations de devis. Le défi réside dans l'identification de tous les caractères Unicode possibles qui représentent les guillemets intelligents et dans la mise en œuvre d'un mécanisme de conversion robuste.
Solution
Pour convertir efficacement tous les types de guillemets intelligents, nous avons besoin pour créer un mappage complet entre les différents caractères Unicode et leurs homologues de guillemets réguliers correspondants. L'extrait de code suivant fournit une solution améliorée :
<code class="php">$chr_map = array( // Windows codepage 1252 "\xC2\x82" => "'", // U+0082⇒U+201A single low-9 quotation mark "\xC2\x84" => '"', // U+0084⇒U+201E double low-9 quotation mark "\xC2\x8B" => "'", // U+008B⇒U+2039 single left-pointing angle quotation mark "\xC2\x91" => "'", // U+0091⇒U+2018 left single quotation mark "\xC2\x92" => "'", // U+0092⇒U+2019 right single quotation mark "\xC2\x93" => '"', // U+0093⇒U+201C left double quotation mark "\xC2\x94" => '"', // U+0094⇒U+201D right double quotation mark "\xC2\x9B" => "'", // U+009B⇒U+203A single right-pointing angle quotation mark // Regular Unicode "\xC2\xAB" => '"', // U+00AB left-pointing double angle quotation mark "\xC2\xBB" => '"', // U+00BB right-pointing double angle quotation mark "\xE2\x80\x98" => "'", // U+2018 left single quotation mark "\xE2\x80\x99" => "'", // U+2019 right single quotation mark "\xE2\x80\x9A" => "'", // U+201A single low-9 quotation mark "\xE2\x80\x9B" => "'", // U+201B single high-reversed-9 quotation mark "\xE2\x80\x9C" => '"', // U+201C left double quotation mark "\xE2\x80\x9D" => '"', // U+201D right double quotation mark "\xE2\x80\x9E" => '"', // U+201E double low-9 quotation mark "\xE2\x80\x9F" => '"', // U+201F double high-reversed-9 quotation mark "\xE2\x80\xB9" => "'", // U+2039 single left-pointing angle quotation mark "\xE2\x80\xBA" => "'", // U+203A single right-pointing angle quotation mark ); $chr = array_keys ($chr_map); $rpl = array_values($chr_map); $str = str_replace($chr, $rpl, html_entity_decode($str, ENT_QUOTES, "UTF-8"));</code>
Cette version améliorée prend en compte à la fois la page de codes Windows 1252 et les caractères Unicode standards, garantissant une conversion complète.
Considérations supplémentaires
En suivant ces directives, vous pouvez implémenter un mécanisme de conversion de devis intelligent robuste et complet en PHP, garantissant une gestion précise des diverses variations de devis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!