Maison  >  Article  >  développement back-end  >  Comment convertir efficacement les devis intelligents en devis réguliers en PHP ?

Comment convertir efficacement les devis intelligents en devis réguliers en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-22 06:48:30833parcourir

How to Effectively Convert Smart Quotes to Regular Quotes in PHP?

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

  1. Encodage Unicode : La solution fournie suppose un encodage UTF-8. Si le texte saisi est encodé différemment, il doit être converti en UTF-8 avant d'appliquer la conversion.
  2. Normalisation : Si votre entrée doit contenir des caractères provenant de diverses sources, la normalisation de l'encodage peut être nécessaire pour garantir une conversion cohérente.
  3. Performance : Pour les ensembles de données de texte volumineux, envisagez d'optimiser le processus de conversion en pré-calculant les tableaux de remplacement de caractères. Cela peut améliorer les performances en évitant les appels de fonction répétés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn