698 Shares 1948 views

Pratique PHP: comparaison de chaînes

PHP est axé sur la bonne gestion de l'information. La syntaxe de la langue est représentée ensemble entièrement fonctionnelle des fonctions de comparaison, le traitement de chaînes, opérateurs de comparaison.

Tout algorithme – une séquence de choix et d'actions. Mais avant de faire un choix, il faut quelque chose pour le comparer avec quelque chose. Line – le mécanisme de contrôle de l'algorithme le plus vaste, efficace et pratique. Line – une variante de présentation des données. Une des données – ce qui est le sujet principal de « soins » de tout algorithme.

la logique ordinaire « comparaison action »

En général, la langue dynamique de frappe ne pas de différence dans les données, comme la ligne de comparaison de PHP et le nombre est pas très différent. Number – il est également une chaîne, quand il contient des chiffres, le point et il n'y a pas un seul caractère qui n'est pas utilisé pour représenter des nombres sous une forme quelconque (notation mathématique).

Si le numéro kontenkatsii fusionne automatiquement avec la ligne, sans poser de questions et aucune erreur cachées, même si la fonction GetType () donne le « entier » ou « double ».

Cependant, il y a une différence entre l'utilisation is_int () et is_numeric (). Le premier donne la vérité, uniquement lorsque le paramètre est un nombre entier, d'autre part, lorsqu'un nombre ou une chaîne numérique (est « chaîne » type de variable, mais comprend toutes les notations mathématiques fournies).

Ceci est un exemple simple – un bon exemple de la façon dont un des opérateurs de comparaison de chaînes PHP ( « == » « === » … « = »!) Peuvent présenter de nombreuses surprises. Les variables peuvent changer leur type, ils ne sont pas toujours des nombres, mais presque toujours ils peuvent conduire à la ligne. Dans un cas extrême – ce sera une chaîne vide.

Sur la base de ce qui précède, une fonction de comparaison de chaînes PHP est le plus populaire. Qu'est-ce exactement choisir, de décider du développeur. Beaucoup d'options disponibles aux expressions régulières.

Les limites de la fonctionnelle disponible

De comparaison de PHP des deux lignes est bonne fonction « faire » strpos () – le moins cher, les fidèles et option pratique. Si le résultat du numéro de fonction, il est clair que d' une chaîne est égale à une autre ou d' une partie à l' autre.

Radicalement opposé, mais aussi tout à fait la bonne approche – l'utilisation des expressions régulières.

Si la fonction $ cResult = scCheckFileName (CSTR $) donne « true », la ligne est le nom du fichier vordovsky. Il aura qu'une seule option d'expansion « .docx » et pas de caractères dans le nom: que des lettres, des chiffres et des caractères « _ », « – ».

La fonction peut être facilement converti en d'autres types de fichiers: $ cPtr = « /^([a-zA-Z…0-9-_]{4,239}).(html|js|css|png|jpg | docx | txt) {1} $ / u ». Cette variante étend la gamme téléchargeable de ligne de balayage (par exemple, comparaison de chaînes PHP est appliquée « pour télécharger des fichiers sur un serveur, sans risque d'erreur d'entrée ») pour html, js, css, …

Utilisation de la strpos () et preg_match () – extrêmes. Ils ne sont pas directement liés à la question de la période de comparaison. Mais la question de l'algorithme – est une question d'utiliser une combinaison de style, l'utilisation de toutes les possibilités d'obtenir un résultat fiable et correct.

PHP fonctionnel: comparaison de chaînes

Arsenal langue cordes par rapport – un pur, non seulement la fonction de comparaison, mais aussi une combinaison d'une recherche ou de remplacement directement. Pas toujours agir doit coïncider avec la comparaison, puisque celle-ci ne conduit pas nécessairement à un changement de toute ligne. Souvent, vous devez choisir l'une ou l'autre branche de l'algorithme.

PHP variante normal: exécute la fonction comparaison de chaînes int strcmp (s1, s2).

Le résultat de la fonction:

  • 0 – ligne sont égaux;
  • -1 – la première chaîne est inférieure à la deuxième;
  • 1 – la première plus la deuxième rangée.

En pratique, cela signifie qu'une partie de la première rangée de la seconde, à partir de laquelle la fonction de PHP (rangées de comparaison) décide. Une version plus limitée de strpos (), parce que dans ce dernier cas, il est possible de connaître la position de l'entrée.

fonction strcmp () – sensible. Si vous voulez comparer la chaîne insensible à la casse, PHP offre son strcasecmp (). La syntaxe est similaire.

Dans la pratique souvent nécessaire de ne pas travailler avec la ligne, mais seulement une partie de celui-ci. Pour cet ensemble de fonctions PHP (comparaison de chaînes) inclus strncmp (s1, s2, N). Le troisième paramètre spécifie effectuer la comparaison uniquement N-octets. Le résultat est similaire strcmp ().

Tableaux, chaînes et comparer

Ceux-ci sont presque toujours représentées par des chaînes. Si l'on considère les tableaux, des objets ou des structures de données, il est juste différentes variantes de combinaisons d'une structure de cordes simples.

ensembles de cordes et des lignes peuvent être prévus de manière complémentaire. La transformation du tableau en fonction de chaîne implode (tableau, symbole), par exemple: margins1 $ = implode ( '', $ style-> getInnerMargin ()); … l'algorithme / utilisateur …; $ Margins2 = implode ( '', $ style-> getInnerMargin ()) permet de fusionner toutes la position d'objet dans la position de la chaîne.

Vous pouvez ensuite effectuer la comparaison de chaîne de PHP, et à la fois: chèque $ = strcmp ($ margins1, $ margins2) et assurez-vous que l'algorithme ou l'utilisateur que quelque chose a changé (ou non). Si vous effectuez une comparaison de la manière habituelle, vous devez trier les éléments du tableau. Il prend plus de temps et est plus compliquée.

Objets et ligne

Encore plus spectaculaire PHP utilisation (comparaisons de chaînes) peut être mis en œuvre par des idées orientées objet.

L'idée moderne des installations suggère qu'ils ont des propriétés et méthodes. Les premiers sont généralement représentés par des nombres, des chaînes, des tableaux et d'autres objets. Ces derniers comprennent souvent des techniques d'enregistrement (mis) dans la ligne de récupération et de la ligne (get).

Contrairement à des tableaux, l'objet fait le travail avec leurs propres propriétés et interagit avec d'autres objets. Objet « compétent » dans lequel ses propriétés sont de valeur réelle pour l'algorithme du programme dans son ensemble.

Ce moment constitue une base et la possibilité d'enregistrer lors de l'enregistrement d'une chaîne uniquement les informations nécessaires, et dans la récupération de la ligne pour restaurer toutes les propriétés de travail dans l'état souhaité. En règle générale, dans tout objet il y a des informations importantes et de travail (temps). La mise en œuvre de cette idée vous permet d'enregistrer non seulement la mémoire, l'espace disque, l'enregistrement de base de données, mais permet également de comparer les lignes des moyens plus simples et plus précis.

Syntaxe et Sémantique

PHP développe dynamiquement, et sa fonctionnalité en termes de comparaison des chaînes et constamment améliorées en termes de traitement. Cependant, rien empêche un développeur de déplacer le centre de gravité dans le domaine de la sémantique.

Sans aucun doute, la fonctionnalité est bonne, mais son utilisation peut être transféré au sens du code dans les objets. Lorsque l'algorithme est présenté comme un système d'interaction entre les objets, il est beaucoup mieux que les comparaisons de séquences et les actions en séquence directe, un style classique.