web-dev-qa-db-fra.com

Comment insérer des textes Unicode dans un widget de calendrier en toute sécurité?

J'ai recueilli une bonne fonction de remplacement de chiffres pour le calendrier WordPress:

function make_bangla_number($str)
{
    $engNumber = array('0','1','2','3','4','5','6','7','8','9');
    $bangNumber = array('০','১','২','৩','৪','৫','৬','৭','৮','৯');
    $converted = str_replace($engNumber, $bangNumber, $str);

    return $converted;
}

La fonction indique clairement que cela consiste à prendre des chiffres anglais et à les remplacer uniquement par des chiffres Bānglā.

Mais le problème est avec une fonction similaire, je peux remplacer tous les scripts mois Grégoriens en Bānglā, mais en utilisant la fonction de chiffres, je déconne le widget calendrier. Parce qu'appeler:

add_filter( 'get_calendar', 'make_bangla_number' );

remplace tous les chiffres, même dans le code HTML. Supposons le lien du mois précédent en HTML:

<td id="prev" colspan="3">
   <a title="View posts for October 2013" href="http://localhost/wp_developer/?m=201310">
      « Oct
   </a>
</td>

obtenir ...

<td id="prev" colspan="৩">
   <a title="View posts for অক্টোবর ২০১৩" href="http://localhost/wp_developer/?m=২০১৩১০">
      « অক্টোবর
   </a>
</td>

Donc, il y a deux problèmes:

  1. L'ancre obtient un chemin incorrect, l'URL de l'archive n'est pas isset (?m=২০১৩১০)
  2. La structure de l'archive de widget est en train de se rompre, car le code HTML reçoit une valeur incorrecte pour les propriétés HTML (colspan="৩")

Et vous savez tous que tous les chiffres Unicode peuvent être égaux en valeur numérique, mais pas égaux à leur valeur binaire. Ainsi, le chiffre latin 1 n'est pas équivalent à Bānglā Numeral par rapport à leur valeur binaire.

Alors,
COMMENT WE PROCÉDER AVEC UN TEL FILTRE/CROCHET DE SÉCURITÉ?

1
Mayeenul Islam

En supposant que vous parliez du widget de calendrier par défaut , vous avez en réalité deux choix:

  1. Regex follement compliqué
  2. Ou faites votre propre widget.

Je voudrais opter pour # 2, dont la viande est en fait la fonction get_calendar . Clonez cette fonction et modifiez les dates selon vos besoins.

Cela suppose qu’il n’existe pas de version localisée appropriée de WordPress pour votre langue - voir le commentaire de @ birgire.

1
s_ha_dum