Analyse de chaînes PHP. Lecture d'un fichier en PHP. Nous choisissons la meilleure option. Obtenir le texte entre $start et $end

La tâche d'analyser et de traiter les informations nécessaires provenant d'un site tiers est confrontée assez souvent à un développeur Web et pour diverses raisons : vous pouvez ainsi remplir votre projet de contenu, charger dynamiquement certaines informations, etc.

Dans de tels cas, le programmeur est confronté à la question : laquelle parmi des dizaines de bibliothèques choisir ? Dans cet article, nous avons essayé de considérer les options les plus populaires et de choisir la meilleure.

Expressions régulières

Même si les « classiques » sont la première chose qui vous vient à l’esprit, vous ne devriez pas les utiliser pour de vrais projets.

Oui, avec tâches simples Les expressions régulières font le meilleur travail, mais leur utilisation devient beaucoup plus difficile lorsque vous devez analyser un morceau de code HTML volumineux et complexe, qui, de plus, ne correspond pas toujours à un modèle spécifique et peut généralement contenir des erreurs de syntaxe.

Au lieu de « finir » votre expression régulière Pour chaque moindre changement de code, nous vous recommandons d'utiliser les outils ci-dessous : c'est plus simple, plus pratique et plus fiable.

XPath et DOM

htmlSQL

Si vous n'utilisez pas PHP, vous pouvez consulter cette courte liste d'outils similaires pour d'autres langages de programmation.

Date de publication : 01/03/2018

Salutations, amis ! 🙂

Je pense que, sinon tous, la plupart d'entre vous ont certainement rencontré dans la pratique le besoin de lire les informations des fichiers txt au niveau des scripts du serveur. Au moins, j'ai eu plusieurs cas de ce type, dont je vais vous parler du dernier aujourd'hui.

Il n'y a rien de compliqué à cela, mais parfois, vous avez les yeux écarquillés devant l'abondance d'options fournies par les langages côté serveur. Si nous parlons spécifiquement de PHP, dans lequel je programme actuellement, alors en utilisant ses fonctions, vous pouvez lire le contenu des fichiers ligne par ligne, ou entièrement dans une chaîne, ou dans un tableau, et pour cette dernière option, il existe plusieurs autres façons ... Ce sont les tartes :)

Malheureusement, ces méthodes fonctionnent à des vitesses différentes pour des fichiers de structures différentes, et il n'y a pas un seul mot sur leur vitesse dans la documentation officielle ; cela ne peut être jugé que dans la pratique, en passant en revue toutes les options possibles.

Aujourd'hui, je vais vous montrer comment fonctionnent les différentes fonctions de lecture de fichiers PHP, de sorte que lorsque vous aurez besoin de créer un analyseur de fichiers PHP pour résoudre des problèmes du monde réel, vous saurez quoi choisir. Je vais également vous expliquer exactement comment faire le bon choix dans des « conditions de combat ».

Aller! 🙂

Création d'un analyseur de fichiers PHP - conditions initiales

Avant de commencer, quelques mots sur la tâche pour laquelle j'ai créé un analyseur de fichiers en PHP, puis choisi celui optimal parmi les options implémentées.

Une fois, j'ai eu un problème au travail où la base de données stockait les numéros de téléphone des utilisateurs dans un format incorrect. Naturellement, j'ai corrigé le bug sans aucun problème.

Mais que faire des informations incorrectes déjà stockées dans la base de données à ce moment-là ? Naturellement, il fallait le remplacer par le bon.

Pour cela, on m'a donné fichier texte avec les identifiants des utilisateurs et leurs numéros de téléphone qui devaient être transférés vers la base de données.

Je dois dire que cela s'est avéré assez lourd : 352 Ko et 8223 lignes de texte, chacune contenant l'identifiant de l'utilisateur et son numéro de téléphone au format ID_utilisateur : numéro_de_téléphone.

En un mot, toute la tâche consistait à lire ligne par ligne le fichier PHP en extrayant l'identifiant et le numéro de téléphone de la ligne, suivi de la mise à jour du numéro de téléphone de l'utilisateur dans la base de données, trouvé par ID.

Mon projet a été implémenté sur le framework Yii PHP, donc dans d'autres exemples de code, vous trouverez des éléments de son API pour travailler avec la base de données, en particulier, alors ne vous inquiétez pas :)

Après avoir analysé les constructions disponibles dans le langage, ainsi que l'expérience d'autres développeurs, recueillies petit à petit sur Internet, j'ai pu identifier 4 méthodes, que je vais vous démontrer plus en détail.

Eh bien, je vais vous dire selon quels critères et comment exactement j'ai choisi la meilleure option parmi eux. Et bien sûr, je partagerai les résultats :)

Cet article est donc un excellent entraînement à la patience :) L'essence de celui-ci sera une étude détaillée du matériel suivant jusqu'aux résultats qui vous attendront à la fin. En cours de route, vous pouvez également travailler sur votre imagination, en imaginant exactement comment l'option idéale sera choisie.

Lire un fichier en PHP ligne par ligne en utilisant fgets()

En conséquence, mon analyseur de fichiers PHP qui implémente cet algorithme a pris la forme suivante :

find("unique_id IN (:id1, :id2)", array(":id1" => strtolower($params), ":id2" => strtoupper($params))); if ($client) ( $client->phone = str_replace(array("\r", "\n"), "", $params); $client->save(); ) ) ) if (!feof ( $fh)) ( echo "Erreur : échec inattendu de fgets()\n"; ) fclose($fh); ) else echo "Vérifiez le nom du fichier, le fichier n'existe pas !"; )

Je vais décrypter un peu mon écriture si quelqu'un a du mal à le comprendre.

Au tout début, la variable $nom de fichier la valeur est attribuée au nom du fichier qui sera analysé, avec le chemin complet d'accès à celui-ci. Vient ensuite PHP vérifiant si le fichier existe et s'il est lisible à l'aide de fonctions le fichier existe() Et est_readable() respectivement.

Si tout va bien, ouvrez le fichier à l'aide de la fonction fopen(), qui est appelé avec l'instruction de contrôle d'erreur PHP pour désactiver la sortie des erreurs générées par cette fonction. J'ai décidé de l'utiliser pour générer mon propre message d'erreur au lieu du message standard.

Si on réussit à ouvrir le fichier, alors on parcourt toutes ses lignes en boucle jusqu'à la fin du fichier, et, si la ligne n'est pas vide, on la sépare par le caractère deux-points avec la fonction exploser().

Ensuite, nous vérifions que l'identifiant de l'utilisateur et son numéro de téléphone ne sont pas vides, recherchons l'utilisateur dans la base de données par identifiant et, s'il en existe un, mettons à jour son numéro de téléphone en supprimant d'abord le trait d'union et les caractères de nouvelle ligne de la valeur numérique.

Eh bien, j'ai aussi utilisé les fonctions PHP strtoinférieur() Et strtoupper() vérifier l'existence dans la base de données d'un utilisateur avec des identifiants qui pourraient être enregistrés dans différents registres, car dans mon cas, ils étaient constitués de symboles et de chiffres.

PHP analysant un fichier dans un tableau en utilisant file()

Cette méthode de lecture d'un fichier en PHP consiste à utiliser la fonction déposer(), qui ouvre un fichier et place son contenu dans un tableau. Dans ce cas, les éléments du tableau seront exactement les lignes du fichier en cours de lecture, ce qui est parfait dans ma situation.

Le code de cette version de l'analyseur de fichiers PHP est le suivant :

find("unique_id IN (:id, :id2)", array(":id" => strtolower($params), ":id2" => strtoupper($params))); if ($client) ( $client->phone = str_replace(array("\r", "\n"), "", $params); $client->

Comme vous pouvez le constater, cela diffère de la méthode précédente de lecture d'un fichier en PHP uniquement à son début, où le fichier est ouvert et immédiatement lu par la fonction déposer() au lieu d'un tas fopen() + fgets(), comme avant.

PHP lit un fichier dans une variable en utilisant fread()

Une autre fonction PHP pour analyser un fichier est fread(), avec lequel vous pouvez lire différents fragments d'un fichier d'une longueur spécifiée. Pour lire l'intégralité du fichier en PHP, j'ai précisé la taille du fichier obtenu en utilisant la fonction comme taille du fragment taille du fichier():

find("unique_id IN (:id1, :id2)", array(":id1" => strtolower($params), ":id2" => strtoupper($params))); if ($client) ( $client->phone = str_replace(array("\r", "\n"), "", $params); $client->save(); ) ) ) ) else echo " Vérifier le nom du fichier, le fichier n'existe pas!"; )

Cette méthode de lecture d'un fichier à l'aide de PHP est en fait très similaire à la précédente, car, malgré le fait qu'avec l'aide de PHP, les données du fichier ne sont pas initialement lues dans un tableau, mais dans une variable de chaîne. , alors il est toujours converti en tableau , car C'est plus facile à travailler qu'une chaîne.

Le moyen le plus simple de convertir une chaîne en tableau en PHP est d'utiliser la fonction éclater(), qui était déjà utilisée aujourd'hui, le début du caractère de chaîne étant passé comme délimiteur.

Création d'un analyseur de fichiers PHP basé sur file_get_contents()

Eh bien, et finalement, j'ai décidé d'implémenter l'analyse de fichiers PHP à l'aide de la fonction fichier_get_contents(), qui est précisément destiné à lire l'intégralité du fichier sur une ligne, c'est-à-dire fonctionne pratiquement comme fread ($ fp, taille du fichier ($ nom du fichier)).

La seule exception est que file_get_contents() ouvre lui-même le fichier et le lit, tandis que pour utiliser fread(), vous deviez d'abord ouvrir le fichier via fopen() et obtenir son pointeur pour une utilisation ultérieure.

En général, le code de l'analyseur de fichiers PHP basé sur file_get_contents() sera presque le même que dans le cas précédent :

find("unique_id IN (:id1, :id2)", array(":id1" => strtolower($params), ":id2" => strtoupper($params))); if ($client) ( $client->phone = str_replace(array("\r", "\n"), "", $params); $client->save(); ) ) ) ) else echo " Vérifier le nom du fichier, le fichier n'existe pas!"; )

C'est tout. Il est temps de résumer les performances de toutes les options répertoriées et de découvrir quel analyseur de fichiers PHP s'est avéré le plus optimal pour une utilisation ultérieure.

Quelle est la meilleure façon de traiter des fichiers en PHP ?

Pour choisir la plus optimale parmi les options trouvées, c'est-à-dire le plus rapide, j'ai décidé de déterminer dans chaque cas. Pour ce faire, j'ai utilisé la technique décrite dans l'article sur le lien.

Les fonctions de lecture des fichiers PHP elles-mêmes sont assez rapides, donc afin d'obtenir au moins quelques chiffres plus ou moins tangibles sur leur temps de fonctionnement, j'ai délibérément laissé les opérations de base de données dans les fragments testés, qui étaient les mêmes dans tous les cas.

Pour plus de commodité, j'ai également décidé d'arrondir la durée d'exécution du script PHP à la troisième décimale, c'est-à-dire jusqu'à des millièmes de secondes (même si cela aurait pu être limité aux centièmes, en fait).

Je me souviens quand j'étais à l'école et que j'écrivais mon travail scientifique en physique (oui, j'ai eu une telle expérience :) lors de sa soutenance devant des professeurs d'université, on me reprochait constamment de ne pas avoir assez d'expériences (j'ai fait 3 expériences pour chaque cas ). Les « sommités de la science » ont cité des chiffres de 100, ou au moins 10 expériences pour comparer différentes situations, afin de pouvoir faire une sorte de comparaison et minimiser la probabilité d'une supériorité accidentelle de l'une sur l'autre.

Oui, j'ai eu du mal avec eux à l'époque, mais j'ai bien appris leurs recommandations et je m'en souviens encore maintenant, même si plus de 10 ans se sont écoulés depuis. De plus, ces recommandations s’appuyaient bien sur les lois de la statistique mathématique et de la théorie des probabilités.

Eh bien, dans cet article, je ne prétends pas que mes expériences actuelles sont scientifiques, j'ai donc considéré que le nombre de 100 expériences était trop important et que le processus pour les mener était trop fastidieux.

En conséquence, j'ai décidé de me limiter à 10 expériences pour chaque version de l'analyseur de fichiers PHP, ce qui, au final, s'est avéré largement suffisant pour identifier un leader clair sans aucune manipulation de faits et d'indices en centièmes et millièmes. d'une seconde de supériorité.

Les résultats des calculs de temps de fonctionnement des analyseurs de fichiers PHP que j'ai développés sont présentés dans le tableau suivant et triés selon les fonctions PHP sur lesquelles ils travaillent.

Expérience fgets() déposer() fread() fichier_get_contents()
1 9,147 9,722 10,539 2,008
2 8,950 9,006 9,495 1,733
3 8,821 8,845 9,207 1,642
4 8,717 8,876 8,931 1,758
5 9,010 9,091 8,703 1,635
6 9,110 8,640 9,712 1,633
7 9,074 9,626 9,13 1,645
8 8,886 9,204 9,048 1,701
9 8,667 8,918 9,438 1,713
10 8,852 9,197 9,537 1,567
Moyenne 8,923 9,113 9,374 1,704

Comme vous pouvez le constater, en plus des temps d'exécution du script dans chacune des 10 expériences, j'ai décidé de calculer la température moyenne à l'hôpital :)

A savoir, la durée de fonctionnement moyenne arithmétique de chaque analyseur de fichiers PHP afin que le leader puisse être identifié.

Et il s'est avéré que c'était, comme vous pouvez le voir, la dernière option, mise en œuvre sur la base de la fonction fichier_get_contents(), qui lit le contenu du fichier dans une variable chaîne, puis le convertit en tableau et le traite en boucle.

Toutes les autres versions des analyseurs de fichiers PHP fonctionnent à peu près à la même vitesse.

Pourquoi exactement il a dépassé ses concurrents, honnêtement, je n’en ai pas la moindre idée. Je peux seulement supposer que l'opération de lecture d'un fichier dans une chaîne en utilisant fichier_get_contents() nécessite moins de ressources que la génération d'un tableau de chaînes prêt à l'emploi à l'aide de déposer().

Et la supériorité sur fgets() et fread() peut être attribuée au fait qu'avant de les utiliser, vous devez ouvrir le fichier en utilisant fopen(), ce qui prend du temps.

Oui, en fait, ce n'est pas grave, parce que... les chiffres parlent d'eux-mêmes : grâce à l'utilisation de la fonction fichier_get_contents() L'analyseur de fichiers PHP basé sur celui-ci fonctionne 5 fois plus vite que les autres, ce qui a influencé ma décision de l'utiliser dans la pratique.

Analyser un fichier en PHP - conclusions

Comme je l'ai déjà dit au début, mes expériences ne sont pas parfaites et cela ne vaut pas la peine de se fier uniquement aux résultats obtenus lors de celles-ci, car, malgré la rapidité fichier_get_contents() dans ma situation, il y a des moments où il est beaucoup plus pratique et efficace d'utiliser les autres analyseurs de fichiers PHP que j'ai donnés.

De plus, n'oubliez pas que PHP lui-même est un langage de programmation synchrone, c'est-à-dire toutes les opérations du serveur se déroulent séquentiellement sans possibilité de configurer leur exécution parallèle, y compris sur différents cœurs du processeur du serveur.

Par conséquent, le temps d'exécution des opérations écrites en code PHP peut être influencé par un certain nombre de facteurs, parmi lesquels le principal est la charge du noyau au moment de l'exécution de l'application PHP.

Je l'ai particulièrement ressenti lors d'expérimentations où le même analyseur de fichiers PHP fonctionnait en 9, puis en 12, puis à nouveau en 9 secondes sur trois itérations consécutives en raison du lancement banal de l'Explorateur Windows lors du deuxième cas, qui, bien sûr, aussi nécessite des ressources du serveur.

Compte tenu de ces fonctionnalités, j'ai mené des expériences presque simultanément, les unes après les autres, avec le même ensemble de programmes en cours d'exécution, afin de ne pas gaspiller les ressources matérielles du serveur.

Par conséquent, à l'avenir, lorsque vous mènerez des expériences similaires avec des constructions PHP, procédez de la même manière, car c’est, en fait, le seul moyen de mettre les expériences sur un pied d’égalité.

Si vous travaillez avec des langages asynchrones côté serveur (C#, Java) ou des technologies (Node.js, par exemple), alors, si possible, pour les expériences, créez un thread séparé qui s'exécutera sur un cœur de processeur dédié.

Eh bien, si vous ne trouvez pas un noyau complètement inutilisé (ce qui n'est pas surprenant compte tenu du niveau des logiciels modernes), alors vous pouvez au moins trouver celui le plus léger chargé, ou au moins celui avec une charge statique qui ne change pas avec le temps. .

Pour résumer, je tiens à dire que les fragments de code présentés dans l'article peuvent être utilisés non seulement pour analyser des fichiers texte en PHP, mais sont également parfaits pour d'autres formats, par exemple pour analyser des fichiers CSV.

Écrivez vos commentaires, à la fois positifs et négatifs, dans les commentaires sous l'article - j'ai besoin de vos avis pour un développement ultérieur :)

À la prochaine! 🙂

P.S.: si vous avez besoin d'un site Internet ou si vous devez apporter des modifications à un site existant, mais que vous n'avez ni le temps ni l'envie pour cela, je peux vous proposer mes services.

Plus de 5 ans d'expérience développement de sites Web professionnels. Travailler avec PHP, Panier Ouvert, WordPress, Laravel, Oui, MySQL, PostgreSQL, Javascript, Réagir, Angulaire et d'autres technologies de développement Web.

Expérience dans le développement de projets à différents niveaux : pages de destination, sites Web d'entreprise, Magasins en ligne, GRC, portails. Y compris le support et le développement Projets HighLoad. Envoyez vos candidatures par email [email protégé].

Insère le code de saut de ligne HTML avant chaque saut de ligne

  • number_format - Formate un nombre avec séparation des groupes
  • ord - Renvoie le code ASCII d'un caractère
  • parse_str - Analyse une chaîne en variables
  • print - Imprime une chaîne
  • imprimer
  • quoted_printable_decode - Décode une chaîne codée par la méthode imprimable citée
  • quotemeta - Échappe les caractères spéciaux
  • rtrim - Supprime les espaces à la fin d'une chaîne
  • sha1 - Renvoie le hachage SHA1 d'une chaîne
  • sha1_file - Renvoie le hachage SHA1 d'un fichier
  • similar_text - Calcule le degré de similitude de deux chaînes
  • soundex - Renvoie la clé soundex pour une chaîne
  • sprintf
  • sscanf - Analyse une chaîne selon un format donné
  • strcasecmp - Comparaison de chaînes insensible à la casse et sécurisée pour les binaires
  • strcmp - Comparaison de chaînes sécurisées en binaire
  • strcoll - Compare les chaînes en fonction des paramètres régionaux actuels
  • strcspn - Renvoie la longueur de la partie au début de la chaîne qui ne correspond pas au masque
  • stripcslashes - Supprime les caractères d'échappement produits par la fonction addcslashes()
  • stripos - Renvoie la position de la première occurrence d'une sous-chaîne, insensible à la casse
  • stripslashes - Supprime les caractères d'échappement produits par addlashes()
  • strip_tags - Supprime les balises HTML et PHP d'une chaîne
  • strstr - Similaire à la fonction strstr, mais indépendante de la casse
  • strlen - Renvoie la longueur d'une chaîne
  • strnatcasecmp - Comparez les chaînes insensibles à la casse à l'aide d'un algorithme
  • strnatcmp - Comparaison de chaînes à l'aide de l'algorithme "d'ordre naturel"
  • strncasecmp
  • strncmp - Comparaison binaire et insensible à la casse des n premiers caractères d'une chaîne
  • strpos - Recherche la première occurrence d'une sous-chaîne dans une chaîne
  • strhrchr
  • strrev - Inverse une chaîne
  • strripos - Renvoie la position de la dernière occurrence d'une sous-chaîne, insensible à la casse
  • strrpos - Recherche la dernière occurrence d'un caractère dans une chaîne
  • strspn - Renvoie la longueur de la partie en début de chaîne correspondant au masque
  • strstr - Recherche la première occurrence d'une sous-chaîne
  • strtok - Divise une chaîne
  • strtolower - Convertit une chaîne en minuscule
  • strtoupper - Convertit une chaîne en majuscule
  • strtr - Convertit les caractères donnés
  • str_ireplace - Une variante insensible à la casse de la fonction str_replace().
  • str_pad - Complète une chaîne avec une autre chaîne jusqu'à une longueur donnée
  • str_repeat - Renvoie une chaîne répétitive
  • str_replace - Remplace la chaîne de recherche par la chaîne de remplacement
  • str_rot13 - Effectue une transformation ROT13 sur une chaîne
  • str_shuffle - Mélange les caractères dans une chaîne
  • str_split - Convertit une chaîne en tableau
  • str_word_count - Renvoie des informations sur les mots d'une chaîne
  • substr - La fonction renvoie une partie d'une chaîne
  • substr_count - Compte le nombre d'occurrences d'une sous-chaîne dans une chaîne
  • substr_replace - Remplace une partie d'une chaîne
  • trim - Supprime les espaces du début et de la fin d'une chaîne
  • ucfirst - Convertit le premier caractère d'une chaîne en majuscule
  • ucwords - Convertit le premier caractère de chaque mot d'une chaîne en majuscule
  • vprintf - Imprime une chaîne formatée
  • vsprintf - Renvoie une chaîne formatée
  • wordwrap - Enveloppe une ligne pour un nombre donné de caractères à l'aide d'un caractère de saut de ligne
  • Caractéristiques des opérateurs de comparaison appliqués aux chaînes.

    $un = 1 ; // Numéro un. $zéro = 0 ; // Attribue le nombre zéro. if ($one == "") echo 1; // Évidemment différent - ne génère pas 1. if ($zero == "") echo 2; //* Attention! Contrairement aux attentes, il en imprime 2 ! if ("" == $zéro) echo 3; //* Et cela n'aidera pas non plus - ça s'imprime !.. if ("$zero" == "") echo 4; // C'est exact. if (strval($zero) == "") echo 5; // Ceci est également correct - il n'imprime pas 5. if ($zero === "") echo 6; // Meilleure méthode, mais ne fonctionne pas en PHP 3.

    hacher()

    La fonction chop() renvoie une chaîne après avoir supprimé les espaces de fin et les nouvelles lignes. La syntaxe de la fonction chop() est :

    hachage de chaîne(chaîne de chaîne)

    Dans l'exemple suivant, la fonction chop() supprime les nouvelles lignes supplémentaires :

    $header = "Table des matières\n\n"; $header = chop($header); // $header = "Table des matières"

    str_pad()

    La fonction str_pad() complète une chaîne jusqu'à une certaine longueur avec les caractères donnés et renvoie la chaîne formatée. Syntaxe de la fonction str_pad() :

    string str_pad (string string, int pad_length [, string pad [, int pad_type]])

    Si le paramètre facultatif padding n’est pas spécifié, la chaîne est complétée par des espaces. Sinon, la chaîne est complétée avec les caractères donnés. Par défaut, la ligne est complétée à droite ; cependant, vous pouvez transmettre le paramètre padding_type STR_PAD_RIGHT, STR_PAD_LEFT ou STR_PAD_BOTH, qui remplira la ligne dans la direction spécifiée. L'exemple montre le remplissage de chaîne avec la fonction str_pad() avec les paramètres par défaut :

    $nourriture = "salade" ; print str_pad ($food, 5) : // Imprime la chaîne "salad" L'exemple suivant utilise les paramètres facultatifs de la fonction str_pad() : $header = "Table of Contents"; print str_pad ($header, 5, "= +=+=" , STR_PAD_BOTH); // Le navigateur affiche la ligne =+=+= Table of Contents=+=+="

    garniture()

    La fonction trim() supprime tous les espaces aux deux extrémités d'une chaîne et renvoie la chaîne résultante. Syntaxe de la fonction Trim() :

    garniture de chaîne (pays de la chaîne]

    Les espaces supprimés incluent les caractères spéciaux \n, \r, \t, \v et \0.

    ltrim()

    La fonction lrim() supprime tous les espaces et caractères spéciaux du bord gauche d'une chaîne et renvoie la chaîne résultante. Syntaxe de la fonction ltrim() :

    chaîne ltrim (chaîne chaîne)

    La fonction supprime les mêmes caractères spéciaux que la fonction trim().

    strlen()

    Détermination de la longueur d'une chaîne

    La longueur d'une chaîne en caractères peut être déterminée à l'aide de la fonction strlen(). Syntaxe de la fonction strlen() :

    int strlen (chaîne chaîne)

    L'exemple suivant montre comment déterminer la longueur d'une chaîne à l'aide de la fonction strlen() :

    $string = "bonjour" ; $longueur = strlen($chaîne); // $longueur = 5

    Comparer deux chaînes

    La comparaison de deux chaînes est l’une des opérations sur les chaînes les plus importantes dans n’importe quel langage. Bien que ce problème puisse être résolu de plusieurs manières différentes, il existe quatre fonctions de comparaison de chaînes en PHP :

    strcmp()

    La fonction strcmp() compare deux chaînes en respectant la casse. Syntaxe de la fonction strcmp() : int strcmp (string string1, string string2)

    Une fois la comparaison terminée, strcmp() renvoie l'une des trois valeurs possibles :

    • 0 si ligne1 et ligne2 sont identiques ;
    • < 0, если строка1 меньше, чем строка2;
    • > 0 si string2 est plus petit que string1.

    $sthng1 = "beurre" ; $string2 = "beurre" ; if ((strcmp($string1. $string2)) == 0) : print "Les chaînes sont équivalentes !"; fin si; // La commande if renvoie VRAI

    strcasecmp()

    La fonction strcasecmp() fonctionne exactement de la même manière que strcmp(), à une exception près : la comparaison ne prend pas en compte la casse des caractères. La syntaxe de la fonction strcasecmp() est :

    int strcasecmp (chaîne chaîne1, chaîne chaîne2)

    L'extrait suivant compare deux chaînes identiques :

    $string1 = "beurre" ; $string2 = "Beurre" ; if ((strcmp($string1, $string2)) == 0) : print "Les chaînes sont équivalentes !"; fin si; // La commande if renvoie VRAI

    strspn()

    La fonction strspn() renvoie la longueur du premier segment de string1 contenant les caractères présents dans string2. La syntaxe de la fonction strspn() est :

    int strspn (chaîne chaîne1, chaîne chaîne2)

    L'extrait suivant montre comment la fonction strspn() est utilisée pour vérifier un mot de passe :

    $mot de passe = "12345" ; if (strspn($password, "1234567890") != strlen($password)) : print "Le mot de passe ne peut pas être composé uniquement de chiffres !"; fin si:

    strcspn()

    La fonction strcspn() renvoie la longueur du premier segment de string1 qui contient des caractères non présents dans string2. Syntaxe de la fonction strcspn() :

    int strcspn (chaîne chaîne1, chaîne chaîne2)

    L'extrait suivant utilise la fonction strcspn() pour vérifier le mot de passe :

    $mot de passe = "12345" ; if (strcspn($password, "1234567890") == 0) : print "Le mot de passe ne peut pas être composé uniquement de chiffres !"; fin si;

    Traitement des données de chaîne sans utiliser d'expressions régulières

    Lors du traitement de grandes quantités d'informations, les fonctions d'expression régulière ralentissent considérablement l'exécution du programme. Ces fonctions ne doivent être utilisées que lors du traitement de chaînes relativement complexes où les expressions régulières sont vraiment nécessaires. Si l'analyse de texte est effectuée selon des règles relativement simples, vous pouvez utiliser des fonctions PHP standard, qui accélèrent considérablement le traitement. Toutes ces fonctions sont décrites ci-dessous.

    strtok()

    La fonction strtok() divise une chaîne en jetons en utilisant les séparateurs spécifiés par le deuxième paramètre. La syntaxe de la fonction strtok() est :

    string strtok (chaîne de caractères, délimiteurs de chaînes)

    La fonction strtok() a une chose étrange : pour diviser complètement une chaîne, la fonction doit être appelée plusieurs fois de suite. La prochaine fois que la fonction est appelée, elle extrait le jeton suivant de la chaîne. Dans ce cas, le paramètre de chaîne n'est spécifié qu'une seule fois - la fonction suit la position actuelle dans la chaîne jusqu'à ce que la chaîne soit complètement analysée en jetons ou qu'un nouveau paramètre de chaîne soit spécifié. L'exemple suivant montre le fractionnement d'une chaîne à l'aide de plusieurs délimiteurs :

    $info = "WJ Gi1more : [email protégé]| Columbus, Ohio"; // Délimiteurs - deux points (:), barre verticale (|) et virgule (.) $tokens = ":|,"; $tokenized = strtok($info, $tokens); // Imprimer les éléments du tableau $tokenized while ($tokenized) : echo "Element = $tokenized
    "; // Veuillez noter que les appels suivants à strtok // ne transmettent pas le premier argument $tokenized = strtok($tokens); endwhile; Résultat : Element = WJGilmore Element = [email protégé]Élément = Columbus Élément = Ohio

    parse_str()

    La fonction parse_str() analyse les paires dans une chaîne et attribue des valeurs aux variables dans la portée actuelle. Syntaxe de la fonction parse_str() :

    void parse_str (chaîne chaîne)

    La fonction parse_str() est particulièrement utile lors de l'analyse d'URL contenant des données de formulaire HTML ou d'autres informations riches. L'exemple suivant analyse les informations transmises via une URL. Une chaîne est un moyen standard de transmettre des données entre les pages, soit compilées dans un lien hypertexte, soit saisies dans un formulaire HTML :

    $url = "fname=wj&lname=gilmore&zip=43210"; parse_str($url); // Après l'exécution de parse_str(), les variables suivantes sont disponibles : // $fname = "wj": // $lname = "gilmore"; // $zip = "43210"

    Étant donné que cette fonction a été conçue pour fonctionner avec des URL, elle ignore le caractère esperluette (&).

    exploser()

    La fonction éclater() divise une chaîne en éléments et renvoie ces éléments sous forme de tableau. Syntaxe de la fonction Explode() :

    tableau éclaté (délimiteur de chaîne, chaîne chaîne [, seuil int])

    Le fractionnement se produit sur chaque instance du séparateur et le nombre de fragments résultants peut être limité par le paramètre de seuil facultatif.

    La fonction éclater() illustre le fractionnement d'une chaîne dans l'exemple suivant :

    $info = "wilson | baseball | Indiens"; $user = exploser("|", $info); // $utilisateur = "wilson"; // $utilisateur = "baseball" ; // $user = "Indiens" ;

    La fonction explosive() est presque identique à la fonction d'expression régulière POSIX split() décrite ci-dessus. La principale différence est que le passage d'expressions régulières en tant que paramètres n'est autorisé que lors de l'appel de split().

    imploser()

    Si la fonction explosive() divise une chaîne en éléments du tableau, son homologue, la fonction implode(), fusionne le tableau en une chaîne. Syntaxe de la fonction Imploser() :

    chaîne implosée (séparateur de chaîne, fragments de tableau)

    La formation d'une chaîne à partir d'un tableau est illustrée dans l'exemple suivant :

    $ohio_cities = array("Columbus", "Youngstown", "Cleveland", "Cincinnati"); $city_string = implode("l", $ohio_cities); // $city_string = "Columbus | Youngstown | Cleveland | Cincinnati";

    implode() a un alias, la fonction join().

    strpos()

    La fonction strpos() trouve la première instance d'une sous-chaîne donnée dans une chaîne. Syntaxe de la fonction strpos() :

    int strpos (chaîne chaîne, chaîne sous-chaîne [, int offset])

    Le paramètre facultatif offset spécifie la position à laquelle la recherche doit commencer. Si la sous-chaîne n'est pas trouvée, strpos() renvoie FALSE (0).

    L'exemple suivant détermine la position de la première occurrence d'une date dans le fichier journal :

    $log = "206.169.23.11:/www/:2000-08-10 206.169.23.11:/www/logs/:2000-02-04 206.169.23.11:/www/img/:1999-01-31"; // A quelle position dans la revue l'année 1999 apparaît-elle pour la première fois ? $pos = strpos($log, "1999"); // $pos = 95. car la première instance de "1999" // est à la position 95 de la ligne contenue dans la variable $log

    strpos()

    La fonction strrpos() trouve la dernière instance d'un caractère donné dans une chaîne. La syntaxe de la fonction strrpos() est :

    int strpos (chaîne de caractères, caractère char)

    En termes de capacités, cette fonction est inférieure à son homologue - la fonction strpos(), car elle vous permet de rechercher uniquement un seul caractère, et non la chaîne entière. Si une chaîne est passée en deuxième paramètre à strrpos(), seul son premier caractère sera utilisé dans la recherche.

    str_replace()

    La fonction str_replace() recherche dans une chaîne toutes les occurrences d'une sous-chaîne donnée et les remplace par une nouvelle sous-chaîne. Syntaxe de la fonction str_replace() :

    string str_replace (sous-chaîne de chaîne, remplacement de chaîne, chaîne de chaîne)

    La fonction substr_replace(), décrite plus loin dans cette section, vous permet de remplacer uniquement une partie spécifique d'une chaîne. Ce qui suit montre comment la fonction str_replace() est utilisée pour effectuer un remplacement global sur une chaîne.

    Si la sous-chaîne n'apparaît jamais dans la chaîne, la chaîne d'origine reste inchangée :

    $favorite_food = "Mes aliments préférés sont la crème glacée et les ailes de poulet"; $favorite_food = str_replace("chicken_wings", "pizza", $favohte_food); // $favorite_food = "Mes aliments préférés sont les glaces et les pizzas"

    strstr()

    La fonction strstr() renvoie la partie d'une chaîne commençant par la première occurrence d'une sous-chaîne donnée. Syntaxe de la fonction strstr() :

    chaîne strstr (chaîne chaîne, sous-chaîne chaîne)

    L'exemple suivant utilise la fonction strstr() pour extraire un nom de domaine d'une URL :

    $url = "http://www.apress.com" ; $domaine - strstr($url, "."); // $domaine = ".apress.com"

    sousstr()

    La fonction substr() renvoie la partie d'une chaîne commençant à une position de départ donnée et ayant une longueur donnée. Syntaxe de la fonction Substr() :

    chaîne substr (chaîne chaîne, int début [, int longueur])

    Si le paramètre facultatif de longueur n'est pas spécifié, la sous-chaîne est supposée commencer à la position de départ spécifiée et continuer jusqu'à la fin de la chaîne. Il y a quatre éléments à prendre en compte lors de l'utilisation de cette fonctionnalité :

    • si le paramètre start est positif, la sous-chaîne renvoyée commence à la position de la ligne avec le numéro donné ;
    • si le paramètre start est négatif, la sous-chaîne renvoyée commence à la position (longueur de la chaîne - début) ;
    • si la longueur est positive, la sous-chaîne renvoyée inclut tous les caractères du début au début + longueur. Si la dernière valeur dépasse la longueur de la chaîne, les caractères jusqu'à la fin de la chaîne sont renvoyés ;
    • si la longueur est négative, la sous-chaîne renvoyée se termine à la distance spécifiée de la fin de la chaîne.

    N'oubliez pas que le paramètre start spécifie le décalage par rapport au premier caractère de la ligne ; donc la chaîne renvoyée commence réellement au numéro de caractère (début + 1).

    L'exemple suivant illustre la sous-chaîne substr() :

    $voiture = "Ford 1944" ; Smodel = substr ($ voiture, 6); // Modèle = "Ford"

    Exemple avec un paramètre de longueur positif :

    $voiture = "Ford 1944" ; $modèle = substr($voiture, 0, 4); // $model = "1944" Exemple avec un paramètre de longueur négatif : $car = "1944 Ford"; $modèle = substr($voiture, 2, -5); // $modèle = "44"

    substr_count()

    La fonction substr_count() renvoie le nombre d'occurrences d'une sous-chaîne dans une chaîne donnée. La syntaxe de la fonction substr_count() est : int substr_count (string string, string substring) Dans l'exemple suivant, la fonction substr_count() compte le nombre d'occurrences de la sous-chaîne ain : $tng_twist = "La pluie tombe principalement sur les plaines d'Espagne"; $count = substr_count($tng_twist, "ain"); // $compte = 4

    substr_replace()

    La fonction substr_replace() remplace la partie d'une chaîne qui commence à une position donnée. Si le paramètre facultatif de longueur est spécifié, un fragment de la longueur spécifiée est remplacé ; sinon, le remplacement est effectué sur toute la longueur de la chaîne de remplacement. La syntaxe de la fonction substr_replace() est :

    string substr_replace (chaîne chaîne, remplacement de chaîne, int start [, int length])

    Les paramètres de début et de durée sont définis selon certaines règles :

    • si le paramètre start est positif, le remplacement démarre à partir de la position spécifiée ;
    • si le paramètre start est négatif, le remplacement commence à la position (longueur de chaîne -start) ;
    • si le paramètre de longueur est positif, un fragment de la longueur spécifiée est remplacé ;
    • si length est négatif, le remplacement se termine à la position (string length -length).

    Le remplacement de texte simple à l'aide de substr_replace() est illustré dans l'exemple suivant :

    $favs = " "les liens favoris"; $name = "Alessia"; // Les paramètres "0, 0" signifient que le fragment à remplacer commence // et se termine à la première position de la ligne. $favs - substr_replace( $favs, $name , 0, 0); imprimer $favs :

    Résultat:

    Les liens favoris d'Alessia

    Conversion de chaînes et de fichiers au format HTML et vice versa

    Convertir une chaîne ou un fichier entier dans un format pouvant être visualisé dans un navigateur Web (ou vice versa) est plus facile qu'il n'y paraît à première vue. PHP a des fonctions spéciales pour cela.

    Conversion de texte en HTML

    La conversion rapide de texte brut au format de navigateur Web est une tâche très courante. Les fonctions décrites dans cette section vous aideront à le résoudre.

    nl2br()

    La fonction nl2br() remplace tous les caractères de nouvelle ligne (\n) par des constructions HTML équivalentes.

    Syntaxe de la fonction nl2br() :

    chaîne nl2br (chaîne chaîne)

    Les caractères de nouvelle ligne peuvent être visibles (c'est-à-dire explicitement inclus dans la ligne) ou invisibles (par exemple, saisis dans l'éditeur). L'exemple suivant convertit une chaîne de texte au format HTML en remplaçant les caractères \n par des sauts de ligne :

    // Chaîne de texte affichée dans l'éditeur. $text_recipe = "Recette de sauce festive : 1 boîte de tomates à l'étouffée 3 cuillères à soupe de jus de citron frais Mélanger, serveur froid."; // Convertit les nouvelles lignes en
    $htinl_recipe = nl2br($text_recipe) La sortie ultérieure de $html_recipe renverra le texte HTML suivant au navigateur : Recette de sauce de fête :
    1 boîte de tomates compotées
    3 cuillères à soupe de jus de citron frais
    Mélangez, serveur froid.

    htmlentités()

    La fonction htmlentities() convertit les caractères en constructions HTML équivalentes. La syntaxe de la fonction htmlentities est :

    chaîne htmlentities (chaîne chaîne)

    L'exemple suivant effectue la substitution nécessaire des caractères de chaîne pour la sortie vers le navigateur :

    $user_input = "Le livre de recettes intitulé Café Française" coûte

    La fonction htmlentities() ne fonctionne actuellement que pour les caractères d'encodage ISO-8559-1 (ISO-Latin-1). De plus, il ne convertit pas les espaces comme on pourrait s'y attendre.

    htmlspecialchars()

    La fonction htmlspecialchars() remplace certains caractères qui ont une signification particulière dans le contexte HTML par des constructions HTML équivalentes. Syntaxe de la fonction htmlspecialchars() :

    chaîne htmlspecialchars (chaîne chaîne)

    La fonction html special chars() convertit actuellement les caractères suivants : & est converti en & ; " " est converti en " ; est converti en >.

    Plus précisément, cette fonctionnalité permet d'empêcher les utilisateurs de saisir du balisage HTML dans des applications Web interactives (telles que les forums en ligne). Des erreurs dans le balisage HTML peuvent empêcher la page entière de se former correctement. Cependant, il existe une solution plus efficace à ce problème : supprimer complètement les balises d'une chaîne à l'aide de la fonction strip_tags().

    L'exemple suivant montre la suppression des caractères potentiellement dangereux par la fonction htmlspeclalchars() :

    $user_input = "Je ne peux tout simplement pas obtenir de PHP et ces fabuleuses recettes de cuisine !"; $conv_input = htmlspecialchars($user_input); // $conv_input = "Je ne peux pas"<> de PHP et ces fabuleuses recettes de cuisine !"

    Si la fonction htmlspecialchars() est utilisée en combinaison avec nl2br(), alors cette dernière doit être appelée après htmlspecialchars(). Sinon les dessins
    , générés lors de l'appel de nl2br(), sont convertis en caractères visibles.

    get_html_translation_table()

    La fonction get_html_translation_table() fournit un moyen pratique de convertir du texte en équivalents HTML. La syntaxe de la fonction get_htril_translation_table() est :

    chaîne get_html_translation_table (int table)

    La fonction get_html_translation_table() renvoie l'une des deux tables de traduction (définies par le paramètre table) utilisées dans le fonctionnement des fonctions standard htmlspecialchars() et htmlentities(). La valeur de retour peut être utilisée en combinaison avec une autre fonction standard, strtr(), pour convertir du texte en code HTML.

    Le paramètre table prend l'une des deux valeurs suivantes :

    • HTML_ENTITIES ;
    • HTML_SPECIALCHARS.

    L'exemple suivant utilise la fonction get_html_translation_table() pour convertir du texte en HTML :

    $string = "Les pâtes et le pain sont les plus amato en Italie"; $translate = get_html_translation_table(HTML_ENTITIES); print strtr($string, $translate); // Les caractères spéciaux sont convertis en constructions HTML // et rendus correctement dans le navigateur.

    À propos, la fonction array_flip() vous permet de convertir du texte en HTML dans le sens opposé et de restaurer le texte original. Supposons qu'au lieu d'imprimer le résultat de strtr() dans l'exemple précédent, nous l'ayons attribué à la variable chaîne $translated.

    Dans l'exemple suivant, le texte original est restauré par la fonction array_flip() :

    $translate = array_flip($translate); $translated_string - "Les pâtes sont le piatto le plus amato en Italie" ; $original_string = strtr($translated_string, $translate); // $original_string = "Les pâtes et le pain sont les plus amato en Italie";

    strtr()

    La fonction strtr() traduit une chaîne, c'est-à-dire qu'elle remplace tous les caractères de la chaîne source par les caractères correspondants de la chaîne de destination. La syntaxe de la fonction strtr() est :

    string strtr (chaîne chaîne, source de chaîne, destination de chaîne)

    Si les chaînes source et destination sont de longueurs différentes, la chaîne longue est tronquée pour s'adapter à la chaîne courte.

    Il existe une syntaxe alternative pour appeler strtr() avec deux paramètres ; dans ce cas, le deuxième paramètre contient un tableau associatif dont les clés correspondent aux sous-chaînes à remplacer, et dont les valeurs correspondent aux sous-chaînes de remplacement. L'exemple suivant remplace les balises HTML par des constructions de type XML :

    " => "

    ", "" => "

    "); $chaîne = "

    Aujourd'hui dans les actualités basées sur PHP

    "; print strtr($string, $source); // Imprime la chaîne " Aujourd'hui dans les actualités basées sur PHP" ?>

    Convertir du HTML en texte brut

    Parfois, vous devez convertir un fichier HTML en texte brut. Les fonctions décrites ci-dessous vous aideront dans cette tâche.

    strip_tags()

    La fonction strip_tags() supprime toutes les balises HTML et PHP d'une chaîne, n'y laissant que du texte. La syntaxe de la fonction strip_tags() est :

    chaîne strip_tags (chaîne chaîne [, chaîne autorisée_terri])

    Le paramètre facultatif Allowed_tags vous permet de spécifier les balises qui doivent être ignorées pendant le processus de suppression.

    Vous trouverez ci-dessous un exemple de suppression de toutes les balises HTML d'une chaîne à l'aide de strip_tags() :

    $user_input = "Je viens amour PHP et gourmand recettes !"; $stripped_input = strip_tags($user_input); // $stripped_input = "J'adore PHP et les recettes gastronomiques !";

    L'exemple suivant ne supprime pas toutes les balises, mais seulement certaines :

    $input = "Je amourà manger!!"; $strip_input = strip_tags ($user_input, " "); // $strip_input = "J'adore manger!!";

    La suppression des balises du texte est également effectuée par la fonction fgetss().

    get_meta_tags()

    Bien que la fonction get_meta_tags() ne soit pas directement liée à la transformation de texte, elle est assez complexe. fonctionnalité utile, ce qui mérite d'être mentionné. Syntaxe de la fonction Get_meta_tags() :

    tableau get_meta_tags (chaîne nom_fichier/URL [, int chemin_inclusion])

    La fonction get_meta_tags() est conçue pour rechercher dans un fichier HTML des balises META.

    Les balises META contiennent des informations sur une page, utilisées principalement par les moteurs de recherche. Ces balises sont à l'intérieur d'une paire de balises... . L'utilisation des balises META est démontrée dans l'extrait suivant (appelons-le exemple.html car il sera utilisé dans le listing 8.2) : Recettes PHP La fonction get_meta_tags() recherche dans l'en-tête du document les balises commençant par le mot META et stocke le mot META. les noms de balises et leur contenu dans un tableau associatif. Le listing 8.2 montre cette fonction appliquée au fichier example.html. Inscription 8.2. Extraire les balises META d'un fichier HTML à l'aide de get_meta_tags()

    $meta_tags = get_meta_tags("example.html") : // La variable $meta_tags contient un tableau avec les informations suivantes : // $meta_tags["keywords"] = "PHP, code, recettes, web" // $meta_tags[ "description" ] = "Informations PHP" // $meta_tags["author"] = "KDG";

    Un détail intéressant : les données des balises META peuvent être extraites non seulement des fichiers situés sur le serveur, mais également d'autres URL.

    Convertir une chaîne en majuscules et minuscules

    Il existe quatre fonctions en PHP conçues pour changer la casse d'une chaîne :

    strtoinférieur()

    La fonction strtolower() convertit tous les caractères alphabétiques d'une chaîne en minuscules. La syntaxe de la fonction strtolower() est :

    chaîne strtolower(chaîne chaîne)

    Les caractères non alphabétiques ne sont pas modifiés par la fonction. La conversion d'une chaîne en minuscules à l'aide de la fonction strtolower() est illustrée dans l'exemple suivant :

    $sentence = "La CUISINE et la PROGRAMMATION PHP sont mes DEUX favoris !"; $phrase = strtolower($phrase); // Après l'appel de la fonction, $phrase contient la chaîne // "la cuisine et la programmation php sont mes deux préférées !"

    strtoupper()

    Les chaînes peuvent être converties non seulement en minuscules, mais également en majuscules. La conversion est effectuée par la fonction strtoupper(), qui a la syntaxe suivante :

    chaîne strtoupper (chaîne chaîne)

    Les caractères non alphabétiques ne sont pas modifiés par la fonction. La conversion d'une chaîne en majuscules à l'aide de la fonction strtoupper() est illustrée dans l'exemple suivant :

    $sentence = "la cuisine et la programmation PHP sont mes deux préférées !"; $phrase = strtoupper($phrase); // Après l'appel de la fonction, $phrase contient la chaîne // "LA CUISINE ET LA PROGRAMMATION PHP SONT MES DEUX FAVORIS !"

    ucpremier()

    La fonction ucfirst() convertit le premier caractère d'une chaîne en majuscule, à condition qu'il s'agisse d'un caractère alphabétique. Syntaxe de la fonction ucfirst() :

    chaîne ucfirst (chaîne chaîne)

    Les caractères non alphabétiques ne sont pas modifiés par la fonction. La conversion du premier caractère d'une chaîne par la fonction ucfirst() est démontrée dans l'exemple suivant :

    &sentence = "la cuisine et la programmation PHP sont mes deux préférées !"; $phrase = ucfirst($phrase); // Après l'appel de la fonction, $phrase contient la chaîne // "La cuisine et la programmation PHP sont mes deux préférées !"

    ucwords()

    La fonction ucwords() convertit la première lettre de chaque mot d'une chaîne en majuscule. Syntaxe de la fonction ucwords() :

    chaîne ucwords (chaîne chaîne")

    Les caractères non alphabétiques ne sont pas modifiés par la fonction. Un « mot » est défini comme une séquence de caractères séparés des autres éléments de la chaîne par des espaces. L'exemple suivant montre comment la fonction ucwords() convertit les premiers caractères des mots :

    $sentence = "la cuisine et la programmation PHP sont mes deux préférées !"; $phrase = ucwords($phrase); // Après l'appel de la fonction, $phrase contient la chaîne // "La cuisine et la programmation PHP sont mes deux préférées !"

    strhr()

    strrchr("string", "o") - Recherche la dernière occurrence d'une sous-chaîne

    Si la sous-chaîne n'est pas trouvée, renvoie FALSE.

    Contrairement à strchr(), si la chaîne de recherche comporte plusieurs caractères, seul le premier caractère est utilisé.

    Si le deuxième paramètre n’est pas une chaîne, il est converti en entier et traité comme un code de caractère.

    // récupère le dernier répertoire de $PATH $dir = substr(strrchr($PATH, ":"), 1); // récupère tout après le dernier saut de ligne $text = "Line 1\nLine 2\nLine 3"; $dernier = substr(strrchr($texte, 10), 1);

    highlight_string()

    highlight_string - met en évidence la syntaxe de la chaîne.

    highlight_string mixte (string str [, bool return])

    La fonction highlight_string() génère une version colorée de str de la syntaxe en utilisant les couleurs définies dans la coloration syntaxique intégrée de PHP.

    Si le deuxième paramètre de retour est TRUE, alors highlight_string() renverra la version du code en surbrillance sous forme de chaîne au lieu de l'imprimer. Si le deuxième paramètre n'est pas TRUE, highlight_string() renverra TRUE en cas de succès, FALSE en cas d'échec.

    Remarque : 1.le paramètre return est devenu disponible à partir de PHP 4.2.0. Avant cela, cela fonctionnait comme par défaut, c'est-à-dire FAUX.
    2.La fonction Highlight_String() distingue le code PHP par des balises. show_source()- synonyme fichier_surbrillance(). Pour modifier la couleur de surbrillance par défaut, utilisez les directives PHP suivantes :

    Highlight.bg #FFFFFF highlight.comment #FF8000 highlight.default #0000BB highlight.html #000000 highlight.keyword #007700 highlight.string #DD0000 en .htaccess : php_flag highlight.bg #FFFFFF en PHP : if (@ini_get("highlight .bg")=="") ...

    ajoute des cils()

    - Échappe les caractères spéciaux dans une chaîne

    Renvoie une chaîne avec une barre oblique inverse (\) ajoutée avant chaque caractère spécial, par exemple pour une utilisation ultérieure de cette chaîne dans une requête de base de données.

    Les guillemets simples ("), les guillemets doubles ("), les barres obliques inverses (\) et NUL (octet NULL) sont échappés.

    $str = "Votre nom est-il O"reilly?"; // affiche : Votre nom est-il O\"reilly ? echo ajoute des barres obliques ($ str);

    stripslashes

    - Supprime les caractères d'échappement produits par la fonction addlashes() Supprime les barres obliques inverses d'échappement. (\" est converti en ", etc.). Les doubles barres obliques inverses (\\) sont converties en barres obliques inverses simples (\).

    retour à la ligne()

    Enveloppe une ligne pour un nombre donné de caractères à l'aide d'un saut de ligne // Utilisation de wordwrap(). fonction cite($ourText, $maxlen=60, $prefix="> ") ( $st = wordwrap($ourText, $maxlen-strlen($prefix), "\n"); $st = $prefix.str_replace( "\n", "\n$prefix", $st); return $st; ) echo cite("La première Matrix I était tout naturellement parfaite, c'était une œuvre d'art - impeccable, sublime. Un triomphe qui n'a d'égal que son échec monumental. L'inévitabilité de sa perte m'apparaît maintenant comme une conséquence de l'imperfection inhérente à chaque être humain. Ainsi, je l'ai redessiné en fonction de votre histoire pour refléter plus précisément les divers grotesques de votre nature. Cependant, j'étais encore une fois frustré par l'échec.", 20);

    La première Matrix que j'ai conçue était tout naturellement parfaite, c'était une œuvre d'art impeccable, sublime. > Un triomphe > n'a d'égal que > son échec monumental. L'inévitabilité de sa perte m'apparaît maintenant comme une conséquence de l'imperfection inhérente à chaque être humain. , > Je l'ai > redessiné en fonction de votre > histoire pour refléter plus précisément > les différentes > grotesques de votre nature. > Cependant, j'étais > encore une fois > frustré par l'échec.


    En savoir plus:

    Les chaînes sont un type de données très important avec lequel vous devez constamment travailler pour résoudre des problèmes de développement Web. Cet article décrit 10 techniques très utiles qui faciliteront la vie d'un développeur PHP.

    Suppression automatique des balises html d'une chaîne

    Lorsque vous utilisez des formulaires remplis par l'utilisateur, vous devez parfois supprimer toutes les balises inutiles. Cette tâche est facilement résolue en utilisant la fonction strip_tags() :

    $text = strip_tags($input, "");

    Obtenir le texte entre $start et $end

    Une telle fonction devrait être dans l'arsenal du développeur : elle reçoit la ligne d'origine, le début et la fin, et renvoie le texte contenu entre $start et $end.

    Fonction GetBetween($content,$start,$end)( $r = exploser($start, $content); if (isset($r))( $r = exploser($end, $r); return $r; ) retour ""; )

    Transformer une URL en lien hypertexte

    Si vous placez une URL dans un formulaire de commentaire sur un blog WordPress, elle se transformera automatiquement en lien hypertexte. Si vous souhaitez implémenter la même fonctionnalité sur votre site Web ou votre application Web, vous pouvez utiliser le code suivant :

    $url = "Jean-Baptiste Jung (http://www.webdevcat.com)"; $url = preg_replace("#http://(+)#", " ", $url);

    Diviser le texte en un tableau de 140 caractères pour Twitter

    Peut-être que tu le sais Twitter accepte les messages ne dépassant pas 140 caractères. Si vous envisagez d'interfacer votre application avec un site de messagerie sociale populaire, une fonctionnalité qui réduit les messages à 140 caractères conviendra probablement.

    Fonction split_to_chunks($to,$text)( $total_length = (140 - strlen($to)); $text_arr = éclater(" ",$text); $i=0; $message=""; foreach ($text_arr comme $word)( if (strlen($message[$i] . $word . " ")<= $total_length){ if ($text_arr == $word){ $message[$i] .= $word; } else { $message[$i] .= $word . " "; } } else { $i++; if ($text_arr == $word){ $message[$i] = $word; } else { $message[$i] = $word . " "; } } } return $message; }

    Supprimer l'URL de la chaîne

    De nombreuses personnes laissent des URL dans les commentaires de blog pour générer du trafic ou générer des commentaires. De tels liens polluent le blog et peuvent provoquer de la frustration chez le propriétaire s'ils sont nombreux. La prochaine fonctionnalité sera donc très utile !

    $string = preg_replace("/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*/ je", "", $chaîne);

    Conversion d'une chaîne en slug

    Besoin de générer un slug (pour un permalien) compatible avec les objectifs SEO ? La fonction suivante prend une chaîne comme paramètre et renvoie un slug compatible SEO. Simple et efficace !

    Fonction slug($str)( $str = strtolower(trim($str)); $str = preg_replace("/[^a-z0-9-]/", "-", $str); $str = preg_replace ("/-+/", "-", $str); return $str; )

    Analyser un fichier CSV

    Les fichiers CSV (Coma Separated Values) sont un moyen simple de stocker et de transférer des données, et l'analyse de ces fichiers en PHP est extrêmement simple. Vous ne me croyez pas ? Le code suivant illustre le traitement d'un fichier CSV :

    $fh = fopen("contacts.csv", "r"); while($line = fgetcsv($fh, 1000, ",")) ( echo "Contact : ($line)"; )

    Trouver une chaîne dans une autre chaîne

    Si une chaîne est contenue dans une autre chaîne et que vous devez la trouver, alors le problème est simple :

    La fonction contient($str, $content, $ignorecase=true)( if ($ignorecase)( $str = strtolower($str); $content = strtolower($content); ) return strpos($content,$str) ? vrai faux; )

    Vérifier qu'une chaîne commence par un certain modèle

    Certains langages de programmation, tels que Java, ont une méthode/fonction startWith qui vous permet de vérifier si une chaîne commence par un certain modèle. Malheureusement, PHP n'a pas une fonction intégrée aussi simple.
    Cependant, nous pouvons le faire nous-mêmes, et très simplement :

    Fonction String_Begins_With($needle, $haystack) ( return (substr($haystack, 0, strlen($needle))==$needle); )

    Nous soulignons email à partir d'une chaîne

    Vous êtes-vous déjà demandé comment les spammeurs obtiennent vos adresses e-mail ? C'est simple. Ils prennent une page Web (par exemple, celle d'un forum) et analysent le code HTML pour extraire les adresses e-mail. Le code ci-dessous prend une chaîne comme paramètre et imprime tous les emails qu'elle contient. Merci de ne pas utiliser ce code pour du spam !

    Fonction extract_emails($str)( // Expression régulière qui extrait tous les e-mails d'une chaîne : $regexp = "/()+\@(()+\.)+((2,4))+/i"; preg_match_all ($regexp, $str, $m); return isset($m) ? $m : array(); ) $test_string = "Chaîne de test... [email protégé] Vérification d'autres formats : [email protégé]; foobar Autre vérification : [email protégé] test6exemple.org [email protégé] [email protected] test9@!foo!.org foobar "; print_r(extract_emails($test_string));

    Les sites Web peuvent être divisés en statiques et dynamiques. Après avoir maîtrisé HTML et CSS, qui permettent de réaliser une belle carte de visite sur Internet, de nombreuses personnes réfléchissent à la manière de créer un site internet dynamique en PHP. Dans le même temps, le maquettiste doit tenir compte du fait qu'il commence désormais à étudier la programmation web : les principes de travail avec le site seront différents. L'un des premiers problèmes auxquels un débutant en PHP est confronté est de travailler avec des chaînes, de les lire et de les traiter.

    Il convient de noter que PHP dispose d'un grand nombre de méthodes, vous devriez donc commencer à les apprendre avec les manipulations les plus simples, telles que la sortie d'une chaîne, la recherche, l'obtention ou le remplacement d'une sous-chaîne, le changement de casse et le renvoi de la longueur d'une chaîne. De nombreuses fonctions ne fonctionnent pas bien avec les caractères cyrilliques. Par conséquent, tous les exemples sont rédigés en anglais pour plus de clarté. Pour les chaînes cyrilliques, les mêmes fonctions sont utilisées, mais avec le préfixe mb_ (par exemple, mb_strpos()). Avant d'utiliser des analogues, vous devez décommenter la ligne dans php.ini ; extension=php_mbstring.dll, en supprimant simplement le point-virgule.

    Création et sortie d'une chaîne

    Nous analyserons la sortie d'une chaîne à l'écran en utilisant la construction bien connue du langage d'écho. Le programmeur peut afficher la ligne immédiatement :

    echo "Ceci est une nouvelle ligne"

    ou créez d'abord une variable puis imprimez-la à l'écran :

    $str = "Ceci est une nouvelle ligne" ;

    Si vous devez afficher plusieurs lignes en une, alors recourez à la concaténation :

    echo "Ceci" . "Nouveau". " Doubler";

    $str1 = "Ceci" ;

    $str2 = "Nouveau" ;

    $str3 = "Chaîne" ;

    écho $str1 . $str2 . $str3;

    Dans ce dernier cas, l'écran affichera C'est NewLine. Un espace peut être ajouté immédiatement lors de l'appel de echo :

    écho $str1 . " " . $str2 . " " . $str3;

    Dans ce cas, l'écran affichera : « Ceci est une nouvelle ligne ». La concaténation est possible non seulement lors de la sortie, mais également lors de la création d'une chaîne :

    $str1 = "Ceci" ;

    $str2 = "Nouveau" ;

    $str3 = "Chaîne" ;

    $chaîne = $str1 . " " . $str2 . " " . $str3;

    echo $chaîne ;

    Echo affiche à la fois le cyrillique et le cyrillique. Si l'une des variables contenait un nombre, alors lors de la concaténation ce nombre sera converti en la chaîne correspondante :

    $somme = $i + $i ; //maintenant $sum contient le chiffre 4

    écho $i . " + " . $je. " = " . $somme ;

    L'écran affichera : "2 + 2 = 4".

    Symboles de service

    Disons qu'une chaîne est définie avec ($string = "Like this"). Vous pouvez alors utiliser les séquences de contrôle en toute sécurité :

    • \n effectue un saut de ligne ;
    • \r renvoie le chariot ;
    • \" échappe aux guillemets :
      • echo "Chaîne avec des guillemets \"doubles\""; //Chaîne avec guillemets doubles
    • \$ échappe au dollar ;
    • \\ échappe à une barre oblique inverse.

    Il existe de nombreuses autres séquences, toutes peuvent être trouvées dans la documentation officielle de PHP.

    Comment trouver la position de la première occurrence d'une sous-chaîne

    Disons que nous avons une ligne simple :

    Nous avons également deux lignes avec des noms :

    $name = "Yemelyan" ;

    $unautreNom = "Katherine" ;

    Il faut savoir si la première ligne contient ces deux noms. Pour ce faire, utilisez la fonction strpos($str, $search). Il renvoie la position de la sous-chaîne recherchée, $search, si cette chaîne est contenue dans l'original, $str. Sinon, la fonction renvoie la valeur booléenne false. Par exemple, strpos($string, $anotherName) renverra false, tandis que strpos($string, $name) renverra un entier. Le code sera comme ceci (nous écrirons la version lorsque la position sera affichée à l'écran) :

    $string = "Je m'appelle Yemelyan et j'ai 27 ans";

    $name = "Yemelyan" ;

    $unautreNom = "Katherine" ;

    echo strpos($chaîne, $autreNom); // affichera faux

    echo strpos ($ chaîne, $ nom); // affichera la position de la première occurrence de la sous-chaîne

    Veuillez noter que la numérotation des lignes commence à zéro, c'est-à-dire que dans notre cas, la dernière ligne affichera le chiffre 11 (les espaces comptent également).

    Trouver la position de la dernière occurrence d'une sous-chaîne et les pièges

    Si la fonction strpos() renvoie la position de la première occurrence, alors sa fonction inverse strrpos() recherche la dernière occurrence de la sous-chaîne.

    Il existe certains pièges associés au démarrage de la numérotation. Cela mérite d'être pris en compte : en PHP, travailler avec des chaînes peut être compliqué par des restrictions dans les comparaisons. Il est donc préférable de ne pas utiliser l'opérateur de comparaison avec négation : strpos($str, $search)!=false. Dans n'importe quelle version de PHP, les exemples avec une telle équivalence peuvent ne pas fonctionner correctement, car la numérotation des lignes commence à zéro et, dans l'interprétation logique, 0 est faux. Cela s'applique également à la fonction strrpos().

    Comment trouver le nombre d'occurrences d'une sous-chaîne

    Souvent, vous devez trouver non pas la position de la première ou de la dernière occurrence d'une sous-chaîne dans une chaîne, mais leur nombre total. Pour ce faire, utilisez la fonction substr_count(), qui traite au moins deux variables : substr_count($str, $search). Renvoie un entier. S'il est nécessaire de réduire la zone de recherche par chaîne, alors deux variables supplémentaires sont transmises à la fonction : respectivement le début et la fin de la chaîne. Autrement dit, la fonction dans ce cas est appelée comme ceci : substr_count($str, $search, $start, $end). La fonction recherchera la sous-chaîne $search dans l'intervalle allant de $start à $end de la chaîne source $str. Si la chaîne n'est pas trouvée, la fonction renverra zéro.

    Comment changer la casse d'une chaîne en PHP : exemples

    Le changement de casse est souvent utilisé pour comparer des chaînes et disons que l'utilisateur doit saisir le nom du dieu suprême dans le programme. Il existe une option "Un" avec laquelle la réponse de l'utilisateur sera comparée. Si le texte saisi ne correspond pas à celui existant (par exemple, l'utilisateur écrit « un » ou « UN »), le programme renverra faux au lieu de vrai. Pour éviter cela, la fonction de changement de casse est utilisée. Ceci est souvent utilisé si un site PHP a des balises : au lieu de centaines de variantes du mot « personnel » (« Personnel », « personnel », « PERSONNEL », etc.), il n'y a qu'une seule balise minuscule.

    La fonction strtolower() change la casse en minuscule. Disons qu'il y a une ligne $catName = "Fluffy". La fonction strtolower($catName) renverra la chaîne "fluffy". Vous pouvez changer la casse en majuscule à l'aide de la fonction strtoupper().

    Comment trouver la longueur d'une chaîne en PHP : travailler avec des fonctions

    Il est souvent nécessaire de trouver la longueur d'une chaîne. Par exemple, en PHP, travailler avec des chaînes de ce type peut être nécessaire lors de la création d'une boucle. Pour rechercher une chaîne, utilisez la fonction strlen(), qui renvoie un nombre – le nombre de caractères. Il ne faut pas oublier que le dernier caractère aura le numéro strlen($str)-1, puisque la numérotation part de zéro.

    Obtenir et remplacer une sous-chaîne en PHP : travailler avec des chaînes

    L'obtention d'une sous-chaîne se fait par la fonction substr(), qui peut prendre deux ou trois arguments : substr($str, $start, $end). Disons que nous avons $string = "Fluffy cat" et que nous voulons obtenir la sous-chaîne du deuxième au quatrième caractère. Puisque la numérotation commence à zéro, la variable avec cette sous-chaîne ressemblera à ceci : $newString = substr($string, 1, 4). Si nous entrons $newString = substr($string, 1), nous obtiendrons une sous-chaîne du deuxième caractère au dernier (c'est-à-dire "luffy"). Ce code est identique au code de chaîne complet utilisant strlen() : substr($string, 1, strlen($string)).

    Pour remplacer une sous-chaîne, utilisez la fonction str_replace(), qui prend trois variables : str_replace($subStr, $newSub, $str). Contrairement à de nombreuses fonctions, str_replace() fonctionne correctement avec les caractères cyrilliques et n'a pas d'équivalent avec un préfixe. Exemple:

    $str = "Le temps est épouvantable aujourd'hui !";

    $newStr = str_replace("terrible", "merveilleux", $str); // Magnifique temps aujourd'hui !

    Conversion d'une chaîne en nombre

    Quiconque apprend la programmation Web doit tôt ou tard convertir une chaîne en nombre. Pour ce faire, deux fonctions similaires sont utilisées : intval() et floatval(), chacune prenant une variable $string. Ils ne diffèrent les uns des autres que par le type de données renvoyées : intval() renvoie un entier et floatval() renvoie un nombre à virgule flottante.

    Pour utiliser à la fois intval() et floatval(), la chaîne doit commencer par des chiffres, et ceux-ci seront convertis en nombre. Si les nombres sont suivis d’un ensemble de lettres, ils seront simplement ignorés. Dans le cas où la chaîne commence par des lettres, l'utilisation de la fonction renverra zéro. Idéalement, la ligne ne devrait contenir que des chiffres.

    Conversion d'un nombre en chaîne

    Vous devez souvent convertir des nombres en chaîne. Dites, si vous devez prendre un demi-nombre et le mettre au carré (par exemple, vérifiez si l'égalité est vraie : 88 x 88 + 33 x 33 = 8833). Dans ce cas, la fonction strval() est utilisée, qui renvoie une chaîne avec un nombre. Après cela, vous pouvez effectuer toutes les autres actions avec la nouvelle chaîne : modifier, rechercher une occurrence d'une sous-chaîne et d'autres fonctions. Si nécessaire, la chaîne peut être reconvertie en nombre en utilisant la méthode déjà décrite ci-dessus.

    L'article n'examine qu'une petite partie de toutes les fonctions liées aux chaînes. Certaines fonctions non décrites fonctionnent avec des symboles, mais la plupart n'ont pas été incluses dans le matériel en raison de spécificités. Pour vous familiariser avec ces fonctionnalités, vous devez procéder à la lecture de la documentation officielle PHP, qui affiche les dernières informations.

    gastrogourou 2017