Maison développement back-end tutoriel php Explication détaillée des chaînes, de l'encodage et des codes UTF-8 en PHP

Explication détaillée des chaînes, de l'encodage et des codes UTF-8 en PHP

Mar 06, 2017 am 09:54 AM

J'ai lu beaucoup d'articles sur le codage récemment, je l'ai donc divisé en deux articles de blog pour parler des connaissances liées à "PHP, chaînes, encodage, UTF-8". Cet article de blog est la première moitié, divisée en quatre parties principales, à savoir " "Définition et utilisation des chaînes", "Conversion de chaînes", "La nature des chaînes PHP", "Chaînes multi-octets". La première moitié est relativement basique, et l'article suivant "Meilleures pratiques de PHP et UTF-8" contiendra peut-être plus d'informations.

Définition et utilisation des chaînes

Les chaînes peuvent être définies de quatre manières en PHP :

Chaîne entre guillemets simples

Les chaînes entre guillemets simples sont similaires aux chaînes brutes en Python, ce qui signifie que les chaînes entre guillemets simples n'ont pas de fonctions d'analyse de variables ni de fonctions d'échappement de caractères spéciaux. Par exemple, $str='hellonworld', n n'a pas de fonction de nouvelle ligne.

Chaîne entre guillemets

Les chaînes entre guillemets doubles ont des fonctions d'analyse de variables et des fonctions d'échappement de caractères spéciaux que les chaînes entre guillemets simples n'ont pas.

Personnellement, je suis très intéressé par l'évasion spéciale des chaînes hexadécimales et octales. Ajout spécial :

\[0-7]{1,3} #八进制表达方式
\x[0-9A-Fa-f]{1,2} #十六进制表达方式
Copier après la connexion

. hérdoc

Cette expression est similaire à une longue chaîne en Python et peut définir une chaîne contenant plusieurs lignes. Sa définition grammaticale est très stricte, vous devez donc y prêter attention lorsque vous l'utilisez.

$str=<<<EOD
hello\n
world
EOD;
Copier après la connexion

Nowdoc

Nowdoc est similaire à une chaîne entre guillemets simples et n'analyse pas les variables. Il est plus adapté pour définir une grande section de texte sans échapper aux caractères spéciaux.

Analyse des variables

La partie la plus puissante des chaînes PHP est l'analyse des variables, qui peut analyser les variables en fonction du contexte au moment de l'exécution (il s'agit d'un langage interprété), ce qui peut produire de nombreuses utilisations merveilleuses.

L'analyse simple des variables signifie que la chaîne peut contenir des « variables », des « tableaux » et des « propriétés d'objet ». Les règles de syntaxe complexes doivent utiliser des symboles {} pour fonctionner (pour former une expression).

Voyons la puissance de l'analyse des variables à travers un exemple

class beers {
    const softdrink = &#39;softdrink&#39;;
    public static $ale = &#39;ale&#39;;
    public $data = array(1,3,"k"=>4);
}

$softdrink = "softdrink";
$ale = "ale";
$arr = array("arr1","arr2","arr3"=>"arr4","arr4"=>array(1,2));
$arr4 = "arr4";
$obj = new beers;
echo "line1:{$arr[1]}\n";
echo "line2:{$arr[&#39;arr4&#39;][0]}\n"; 
echo "line3:{$obj->data[1]}\n";
echo "line4:{${$arr[&#39;arr3&#39;]}}\n";
echo "line5:{${$arr[&#39;arr3&#39;]}[1]}\n";
echo "line6:{${beers::softdrink}}\n";
echo "line7:{${beers::$ale}}\n";
Copier après la connexion

Conversion de chaîne

Une autre raison pour laquelle le langage PHP est plus simple que Python est la conversion implicite des types, qui simplifiera de nombreuses opérations. Cela s'explique par la conversion de chaînes.

Coercition de type chaîne

$var = 10 ;
$dvar = (string)$var ;
echo $dvar . "_" . gettype($dvar);
Copier après la connexion

La fonction strval() consiste à obtenir la valeur de chaîne de la variable :

$var = 10.2 ;
$dvar = strval($var) ;
echo gettype($var) . "_" . $dvar . "_" . gettype($dvar);
Copier après la connexion

La fonction settype() définit le type de la variable :

$str = "10hello";
settype($str, "integer");
echo $str ;
Copier après la connexion

Pendant le processus de conversion de type forcé, certaines règles seront suivies lors de la conversion d'autres types de valeurs en chaînes. Par exemple, une valeur booléenne TRUE est convertie en une chaîne de "1". Il est préférable de comprendre les règles pertinentes.

Conversion de type automatique

Les deux conversions ci-dessus sont des conversions d'affichage, et il est plus important de prêter attention à la conversion de type automatique. Dans une expression qui nécessite une chaîne, elle sera automatiquement convertie en type. Pour plus de détails, voir l'exemple :

.
$bool = true;
$str = 10 + "hello"
echo $bool . "_" . $str ;
Copier après la connexion

L'essence des chaînes PHP

Citant l'explication de la documentation PHP :

La chaîne en PHP est implémentée sous la forme d'un tableau d'octets plus un entier spécifiant la longueur du tampon. Il n'y a aucune information sur la façon de convertir les octets en caractères, c'est au programmeur de décider. Il n'y a aucune restriction quant aux valeurs qui composent une chaîne, y compris les octets avec une valeur de 0 qui peuvent apparaître n'importe où dans la chaîne.

PHP ne spécifie pas le codage de la chaîne. La manière dont la chaîne est codée dépend du programmeur. Les chaînes sont codées selon le codage du fichier PHP. Par exemple, si l'encodage de votre fichier est GBK, alors le contenu de votre code sera GBK.

Pour compléter le concept de sécurité binaire, un octet avec une valeur de 0 (NULL) peut être à n'importe quelle position dans la chaîne, et certaines fonctions non binaires de PHP sont appelées fonctions C en bas, qui ignoreront les caractères après NULL. .

Tant que l'encodage des fichiers PHP est compatible avec ASCII, les opérations sur les chaînes peuvent être bien gérées. Cependant, les opérations sur les chaînes sont toujours de nature native (quel que soit l'encodage du fichier), vous devez donc faire attention lorsque vous les utilisez :

  • Certaines fonctions supposent que les chaînes sont codées en octets uniques, mais n'exigent pas que les octets soient interprétés comme des caractères spécifiques. Par exemple, la fonction sbustr().

  • De nombreuses fonctions doivent transmettre explicitement des paramètres d'encodage, sinon les valeurs par défaut seront obtenues à partir du fichier PHP.INI, comme la fonction htmlentities().

  • Il existe également certaines fonctions liées à la zone locale, et ces fonctions ne peuvent fonctionner que sur un seul octet.

Dans des circonstances normales, bien que PHP ne prenne pas en charge les caractères Unicode en interne, il prend en charge l'encodage UTF-8. Dans la plupart des cas, il n'y aura aucun problème. Cependant, les situations suivantes peuvent ne pas être gérées :

  • .

    Comment convertir des chaînes codées non UTF-8

  • Une page Web encodée en UTF-8, mais lorsque les utilisateurs soumettent le formulaire, ils peuvent utiliser l'encodage GBK (qui n'est pas conforme aux balises méta)

  • Un fichier PHP encodé en UTF-8, utilisant strlen("China") renvoie 6 au lieu du nombre réel de caractères (2)

Alors comment résoudre ce problème ? PHP fournit l'extension mbstring !

Chaîne multi-octets

L'extension mbstring n'est pas activée par défaut. Vous avez besoin de --enable-mbstring lors de l'installation.

Regardons d'abord la configuration de la directive mbstring dans PHP.INI. Il a fallu beaucoup de temps pour la comprendre progressivement.

  • Je comprends le paramètre mbstring.langue comme UTF-8

  • mbstring.internal_encoding Cet encodage n'a rien à voir avec l'encodage des fichiers PHP. C'est juste que dans la plupart des fonctions mbstring, vous devez spécifier l'encodage de la chaîne à traiter. Si vous ne le spécifiez pas explicitement, la valeur de ce paramètre le sera. être obtenu par défaut. La valeur de ce paramètre est utilisée dans les versions supérieures de PHP à la place.

  • mbstring.http_input Ce paramètre spécifie le codage par défaut pour l'entrée HTTP (à l'exclusion des paramètres GET). Généralement conforme à l'encodage de la page HTML, la valeur de ce paramètre est remplacée par le paramètre default_charset.

  • mbstring.http_output Ce paramètre m'a induit en erreur. Qu'est-ce que la sortie HTTP ? La sortie PHP n'est-elle pas simplement une page ?

  • mbstring.encoding_translation, concentrons-nous sur ce paramètre. Il est désactivé par défaut. S'il est activé, PHP convertira automatiquement l'encodage de la variable POST et le nom du fichier téléchargé en la valeur spécifiée par mbstring.internal_encoding. , je ne l'ai pas testé. Vous pouvez télécharger un fichier nommé chinois. Il est recommandé de le fermer et de laisser les programmeurs gérer les problèmes associés.

Regardons plus tard quelques fonctions étendues par mbstring :

  • mb_http_input() : détecte le codage des caractères d'entrée HTTP et juge qu'il est nécessaire de traiter le nom de fichier du téléchargement de fichier.

  • mb_convert_encoding() : Une fonction couramment utilisée, faites attention au troisième paramètre.

  • mb_detect_order() : définit/obtient l'ordre de détection du codage des caractères.

  • mb_list_encodings() : renvoie la liste de codage prise en charge par le système.

Remarque importante : les fichiers PHP doivent prendre en charge certains encodages et doivent être compatibles ASCII.

Mais n'utilisez pas BIG-5 comme encodage de fichier PHP, surtout si la chaîne apparaît sous la forme d'identifiants ou de littéraux. Si l'encodage réel du fichier PHP est BIG-5, essayez de convertir le contenu d'entrée et de sortie en UTF-8. .

Zend Multioctet

Enfin, parlons du concept de Zend Multibyte. Je ne le comprends pas très bien. Tout d'abord, ne le confondez pas avec l'extension mbstring. Le mode Zend Multibyte est désactivé par défaut et peut être activé via la commande zend.multibyte. Spécifiez ensuite l'encodage de l'analyseur PHP via la fonction declare().

Alors quelle est la signification de cette instruction ? Comme mentionné ci-dessus, l'encodage des fichiers PHP doit être compatible ASCII, alors que faire avec des encodages ASCII incompatibles comme BIG-5. Vous pouvez l'utiliser via cette commande lorsque l'analyseur PHP lit l'encodage mbstring.script_encoding et l'utilise. encodage pour analyser les fichiers PHP.

Ce qui précède est une explication détaillée des chaînes, des encodages et des codes UTF-8 en PHP. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

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,

See all articles