Question

Normalement, je voudrais juste faire.

$str = preg_replace('#(\d+)#', ' $1 ', $str);

Si je savais que ça allait être utf-8 Je voudrais ajouter un minuscule « u » modificateur au modèle et je pense que je serais bon. Mais à cause de rapports de utf-8 prenant 2x et 3x dans certains cas, l'espace de stockage qu'il prendrait si le jeu de caractères natif ont été utilisés, j'essaie de ne pas limiter l'application à utf-8.

Ainsi, je suis en train de rester loin de mes fonctions préférées preg_.

La plupart des choses ont été assez simples à ce jour, mais je suis un peu coincé sur le remplacement où je normalement utiliser des classes de caractères dans preg_ tels que « \ d ».

Était-ce utile?

La solution

Mettre en place une enveloppe de stockage avec mb_convert_encoding donc en interne vous suffit de manipuler UTF-8.

(je pense toujours que vous devez besoin UTF-8 et sauver tout le monde beaucoup d'ennuis.)

Autres conseils

Je pense que le codage UTF-8 est telle que rien dans la sortie codée avec une valeur d'octet de 127 ou moins est toujours le caractère ASCII correspondant à cette valeur d'octet et jamais fait partie d'une séquence multi-octets. Ainsi, vous pouvez continuer à prétendre l'encodage est ASCII dans cette situation et ne pas causer des problèmes (comme les espaces et les chiffres sont ASCII).

Voir la description http://en.wikipedia.org/wiki/UTF-8 où il montre que tous les octets dans une séquence multi-octets ont le bit le plus significatif (par exemple, sont tous> 127).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top