Amenant Unicode à PHP avec UTF-8 portable
Points de base
- Bien que PHP soit capable de gérer les noms de variables multi-octets et les chaînes Unicode, le langage manque de support Unicode complet en raison du traitement des chaînes comme des séquences de caractères à un octet. Cette limitation affecte tous les aspects du fonctionnement des chaînes, y compris l'extraction de la sous-chaîne, la détermination de la longueur de la chaîne et la segmentation des chaînes.
- Portable UTF-8 est une bibliothèque d'espace utilisateur qui apporte la prise en charge Unicode aux applications PHP. Il est construit au-dessus de MBSTring et ICONV, fournit environ 60 fonctions de manipulation, de test et de vérification de la chaîne basée sur Unicode et utilise UTF-8 comme schéma de codage de caractères principal. La bibliothèque est entièrement portable et peut être utilisée avec toute installation PHP 4.2 ou ultérieure.
- La bibliothèque UTF-8 portable fournit plusieurs fonctions pour le traitement des chaînes Unicode, y compris la vérification de l'entrée UTF-8, en supprimant les octets non valides, en codant pour le texte dans des entités HTML pour empêcher les attaques XSS, rédaction des espaces, supprimer des espaces en double, créer des inclusions UTF-8 caractères UTF-8 caractères UTF-8 Fragments d'URL et limites forcées sur la longueur du caractère d'entrée. Cela garantit que dans les applications compatibles Unicode, la focalisation passe de l'octet et des longueurs d'octets aux longueurs de caractère et de caractère.
PHP permet des noms de variables multi-octets (par exemple $a∩b
, $Ʃxy
et $Δx
), mbstring
et d'autres extensions peuvent gérer les chaînes Unicode, et utf8_encode()
et utf8_decode()
les fonctions peuvent être utilisées dans UTF Convertissez les chaînes entre -8 et le codage ISO-8859-1. Cependant, on pense largement que PHP manque de support Unicode. Cet article décrit la signification du manque de support Unicode et montre comment utiliser une bibliothèque qui apporte le support Unicode aux applications PHP - UTF-8 portable.
Prise en charge Unicode dans PHP
Le manque de prise en charge UNICODE / Multi-Byte de PHP signifie que les fonctions de traitement des chaînes standard traitent les chaînes comme des séquences de caractères à un octet. En fait, le manuel PHP officiel définit une chaîne en PHP comme "une série de caractères, dont l'un est le même qu'un octet". PHP ne prend en charge que les caractères 8 bits, tandis que Unicode (et de nombreux autres jeux de caractères) peuvent nécessiter plusieurs octets pour représenter un caractère. Cette limitation de PHP affecte presque tous les aspects du fonctionnement de la chaîne, y compris (mais sans s'y limiter) l'extraction de la sous-chaîne, la détermination de la longueur de la chaîne, la segmentation des chaînes, le mélange, etc. Les efforts pour résoudre ce problème ont commencé au début de 2005, mais en 2010, le travail de support de l'Unicode indigène à PHP a été arrêté et suspendu pour diverses raisons. Étant donné que le support UNICODE natif dans PHP peut prendre des années à mettre en œuvre (si c'est le cas), les développeurs doivent compter sur des extensions disponibles telles que mbstring
et iconv
pour combler cette lacune, mais ces extensions n'offrent que le support Unicode limité. Ces bibliothèques ne sont pas centrées sur Unicode et peuvent également être converties entre les encodages non Unicode. Ils apportent une contribution positive à la simplification du traitement des chaînes Unicode. Cependant, l'extension ci-dessus présente également certains inconvénients. Ils ne fournissent que des capacités de traitement de chaîne UNICODE limitées, et aucune d'entre elles n'est activée par défaut. Les administrateurs de serveur doivent activer explicitement l'une ou toutes les extensions pour y accéder via des applications PHP. Les fournisseurs d'hébergement partagés aggravent souvent les choses en installant une ou deux extensions, ce qui rend difficile pour les développeurs de s'appuyer sur une API toujours disponible pour répondre à leurs besoins Unicode. Pourtant, la bonne nouvelle est que PHP peut sortir du texte Unicode. En effet, PHP ne se soucie pas vraiment de savoir si nous envoyons du texte anglais codé en ASCII ou un autre texte appartenant à la langue dont les caractères sont codés en plusieurs octets. Sachant cela, les développeurs PHP n'ont désormais besoin que d'une API qui fournit une manipulation de chaîne basée sur Unicode confortable.
UTF-8 PORTABLE
La solution récente consiste à créer une bibliothèque d'espace utilisateur écrite en PHP. Même si le niveau du serveur / du langage manque de prise en charge, ces bibliothèques peuvent être facilement regroupées avec l'application pour assurer la présence de la prise en charge Unicode. De nombreuses applications open source incluent déjà leurs propres bibliothèques de ce type, et beaucoup d'autres utilisent des bibliothèques tierces gratuites UTF-8 est une telle bibliothèque. Portable UTF-8 est une bibliothèque légère gratuite construite au-dessus de mbstring
et iconv
. Il étend la fonctionnalité de ces deux extensions, fournissant environ 60 fonctions de manipulation, de test et de vérification basées sur UNICODE; Comme son nom l'indique, UTF-8 portable utilise UTF-8 comme schéma de codage de caractère principal. La bibliothèque utilise des extensions disponibles (mbstring
et iconv
) pour des raisons de vitesse et pantement certaines incohérences lorsque vous les utilisez directement, mais s'il n'y a pas de ces extensions sur le serveur, il repose à l'utilisation de la routine pure PHP A UTF-8 écrite écrite écrite . Portable-UT8 est entièrement portable et peut être utilisé avec n'importe quelle installation PHP 4.2 ou ultérieure.
Traitement du support à l'aide de UTF-8
Les éditeurs de texte avec un mauvais support Unicode peuvent corrompre le texte lors de la lecture du texte, et du texte copié et collé dans des formulaires Web à partir d'un tel éditeur peut être la source de UTF-8 non valide pour l'application. Lors du traitement des entrées soumises par l'utilisateur, assurez-vous de vous assurer que l'entrée est exactement conforme aux attentes de l'application. Pour détecter si le texte est valide UTF-8, vous pouvez utiliser la fonction is_utf8()
de la bibliothèque.
if (is_utf8($_POST['title'])) { // 执行某些操作... }
La récupération des caractères à partir d'octets invalides est impossible, donc la suppression des octets qui ne sont pas reconnus comme des caractères UTF-8 valides peuvent être votre seul choix. La fonction utf8_clean()
peut être utilisée pour supprimer les octets non valides.
$title = utf8_clean($_POST['title']);
Chaque caractère Unicode peut être codé comme l'entité HTML correspondante, et vous voudrez peut-être coder le texte de cette manière pour aider à prévenir les attaques XSS avant de la sortir au navigateur.
echo utf8_html_encode($title);
Habituellement, les espaces sont coupés au début et à la fin d'une chaîne. Unicode répertorie environ 20 caractères d'espace, et certains caractères de contrôle basés sur ASCII doivent également être considérés comme des objets qui doivent être élagués.
$title = utf8_trim($title);
En revanche, les doublons de ces espaces peuvent exister au milieu d'une chaîne et doivent être supprimés. Ce qui suit montre comment utiliser utf8_remove_duplicates()
et utf8_ws()
en combinaison:
$title = utf8_remove_duplicates($title, utf8_ws());
La solution traditionnelle pour créer des fragments d'URL à des fins de référencement utilise la translittération et supprime tous les caractères non ASCII du fragment. Cela rend l'URL moins précieuse qu'elle ne l'est. Bien que l'URL puisse prendre en charge les caractères codés UTF-8, sans une telle suppression ou une telle translittération, nous pouvons créer des extraits riches contenant des caractères dans n'importe quelle langue:
$slug = utf8_url_slug($title, 30); // 字符长度30
Du début de la vérification d'entrée à la sauvegarde des données dans une base de données, les applications compatibles UNICODE se concentrent sur les longueurs de caractère et de caractère, et non des longueurs d'octets et d'octets. Ce changement de mise au point nécessite une nouvelle interface pour comprendre cette différence. Il est généralement nécessaire de limiter la longueur du caractère d'entrée, donc si l'entrée mesure plus de 60 caractères, nous créerons une sous-chaîne.
if (utf8_strlen($title) > 60) { $title = utf8_substr($title, 0, 60); }
ou:
if (!utf8_fits_inside($title , 60)) { $title = utf8_substr($title, 0 ,60); }
Il existe trois façons différentes d'accéder à un seul caractère à l'aide de la bibliothèque portable-UT8. Nous pouvons utiliser utf8_access()
pour accéder à un seul caractère.
echo '第六个字符是:' . utf8_access($string, 5);
utf8_chr_map()
permet un accès itératif d'un seul caractère à l'aide d'une fonction de rappel.
utf8_chr_map('some_callback', $string);
Nous pouvons diviser la chaîne en un tableau de caractères en utilisant utf8_split()
et traiter les éléments du tableau en tant que caractère.
array_map('some_callback', utf8_split($string));
Formation Unicode peut également nous obliger à trouver le point de code minimum / maximum dans la chaîne, segmenter la chaîne, les marqueurs de commande d'octets de processus, la conversion de cas de chaîne, la randomisation / mélange, le remplacement, etc. Tout cela est pris en charge par Portable-UT8.
Conclusion
Le développement de PHP 6 a été arrêté, ce qui a entraîné le retard du besoin à long terme du support Unicode natif, ce qui est crucial pour le développement d'applications multilingues. Par conséquent, les extensions côté serveur et les bibliothèques d'espace utilisateur telles que UTF-8 portable jouent un rôle important en aidant les développeurs à créer de meilleures toiles standardisées pour répondre aux besoins locaux.
(La partie FAQ est omise ici en raison des limitations de l'espace)
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.
