Vérification de l'occurrence d'une sous-chaîne dans une chaîne php. Fonctions pour travailler avec des chaînes en PHP. Fonctionnalité de recherche de base

La fonction strpos() en PHP est l'une des plus utilisées lors du traitement de données de chaîne. Il permet de déterminer la position à partir de laquelle la sous-chaîne souhaitée apparaît dans la chaîne source. Parallèlement, pour obtenir un résultat adéquat, un certain nombre de subtilités doivent être prises en compte.

Paramètres d'entrée et de sortie

En général, la syntaxe de la fonction PHP strpos() ressemble à ceci :

strpos mixtes (string $string , mixte $substring[, int $offset = 0 ])

L'entrée prend deux arguments obligatoires et un facultatif :

  • La chaîne source est $string, dans laquelle la recherche sera effectuée.
  • La sous-chaîne que vous recherchez est $substring. Ce paramètre est de type mixte. Cela signifie qu'en plus du type de données chaîne, la fonction peut en accepter n'importe quel autre. Dans ce cas, l'argument sera converti en entier et traité comme un code de caractère.
  • Un paramètre facultatif qui spécifie le décalage - $offset. Par défaut, la recherche est effectuée depuis le tout début de $string, et le décalage est 0. Si vous définissez un décalage négatif, il sera compté à partir de la fin de la chaîne.

La fonction PHP strpos() renvoie la position à laquelle $substring est inclus dans $string. S'il y a plusieurs occurrences de ce type, seule la position de la première sera renvoyée.

S'il n'y a aucune correspondance, la sortie sera la valeur booléenne false.

Caractéristiques du travail

Lors de la recherche de la position d'une sous-chaîne, il est important de considérer que la numérotation des caractères commence à zéro. Par conséquent, 0 est l’une des valeurs de retour correctes.

Dans une comparaison lâche, 0 est converti en type booléen, devient faux et peut être interprété comme l'absence d'occurrences. Par conséquent, il est très important d'utiliser une égalité stricte (===), en tenant compte du type de valeurs comparées.

De plus, strpos() est un exemple de fonction PHP sensible à la casse.

Exemples d'utilisation

Exemple 1. Occurrence simple. Vous devez trouver la position où la clé de sous-chaîne apparaît dans les singes de chaîne.

Exemple 2. Aucune occurrence. Si vous modifiez la chaîne de recherche en KEY, la fonction PHP strpos() ne trouvera pas de correspondance car elle est sensible à la casse. Le résultat sera la valeur booléenne false.

Exemple 3. Entrée en position zéro. Il est important d'utiliser une égalité stricte lors de la vérification du résultat d'une fonction, sinon vous risquez d'obtenir un résultat incorrect.

Les deux premières vérifications détermineront qu'il n'y a aucune occurrence, même si la durée de vie de la sous-chaîne est incluse dans la chaîne lifehack d'origine.

Exemple 4 : décalez la position de départ à l'aide du paramètre $offset.

Après avoir réglé le décalage sur 3, la recherche commence au caractère « e ».

PHP propose diverses options pour rechercher des chaînes dans d'autres chaînes. On retrouve les fonctions habituelles. Il est possible d'utiliser des expressions régulières. Le développeur peut développer sa propre version de recherche d'informations, sous réserve des règles de syntaxe.

La recherche de chaînes ne se limite pas à confirmer la présence du caractère ou de la chaîne souhaitée à l'emplacement souhaité. Un objet peut agir comme une chaîne - il s'agit d'un concept d'information plus volumineux qu'une simple chaîne. La recherche est particulièrement efficace lorsque le moment de la découverte s'accompagne d'une décision immédiate, plutôt que de nécessiter un traitement supplémentaire.

Fonctionnalité de recherche de base

Recherche - fonction strpos(). Son résultat est soit une valeur booléenne, soit la position de l'occurrence de l'objet recherché (deuxième paramètre) dans la chaîne (premier paramètre) à partir de la position (troisième paramètre). Si le dernier paramètre n'est pas précisé, la recherche s'effectue à partir de la position zéro de la chaîne.

Dans cet exemple, la recherche PHP dans une chaîne est affichée en utilisant un seul caractère comme exemple. Vous pouvez utiliser une chaîne au lieu d'un symbole. PHP ne limite pas le programmeur quant à la taille des chaînes, mais des limites raisonnables sont essentielles.

Vous pouvez rechercher des chaînes dans des chaînes en respectant la casse, à partir de la première ou de la dernière occurrence, et utiliser des expressions régulières. Comme dans tous les autres cas, l’encodage de la page sur laquelle se trouve le script est indispensable.

Dans certains cas, il est judicieux d'utiliser la variante iconv_strpos() plutôt que simplement strpos(). Dans la grande majorité des cas, la recherche d'une sous-chaîne dans une chaîne PHP fournira des résultats parfaitement précis : il suffit de conserver l'encodage de la page et de la chaîne dans le même encodage.

Caractéristiques de l'approche standard

Si la recherche d'une sous-chaîne dans une chaîne PHP ne donne aucun résultat : ce que vous recherchez n'existe pas et le résultat sera une valeur booléenne. Cependant, si la sous-chaîne recherchée part de la position zéro, cela doit être souligné dans les opérations de comparaison et d'analyse du résultat. Lorsque le résultat est 0, il n’est pas beaucoup plus éloigné du résultat faux.

Contrairement à JavaScript, PHP est plus conservateur en ce qui concerne les chaînes, et à ce jour, les chaînes restent des chaînes. Les fonctions de chaîne sont utilisées avec elles : du niveau strpos simple au niveau complexe utilisant des expressions régulières.

Vous devez rechercher :

  • décider de la direction de l'algorithme ;
  • remplacez ce que vous recherchez par autre chose ;
  • vérifier l'événement ;
  • augmenter le compteur de statistiques, etc.

C'est la logique habituelle de l'algorithme ; JavaScript est allé plus loin et a reconnu les « chaînes » comme des objets. Mais la reconnaissance seule ne suffit pas dans la pratique. Si nous faisons abstraction du concept de « chaîne » et le comprenons comme un objet réel, PHP nous permettra de formuler la question « recherche d'une chaîne dans une chaîne » dans le contexte d'une méthode réelle, par exemple, une pomme peut être mûr, pas seulement lorsqu'il est rouge.

Une recherche classique du mot « rouge » dans la description d'une pomme ne garantit pas une réponse fiable sur la maturité du fruit. Si la pomme n'est pas représentée par une chaîne, mais par un objet, alors PHP recherchera la chaîne dans une chaîne non pas comme strpos, mais comme méthode d'un objet réel. Cependant, rien ne garantit que la fonction strpos sera utilisée dans le corps de la méthode.

Fonctions standards dans des solutions non standards

Une caractéristique du traitement habituel de l’information (humaine) : la position, là où se trouve quelque chose, compte lorsqu’il s’agit d’un objectif ou d’une décision. Dans tous les autres cas, peu importe l'endroit où quelque chose est présent, il est important qu'il soit désigné et constitue la base d'actions ultérieures.

La recherche s'effectue indirectement dans les fonctions trim, str_replace et autres. Une option de recherche intéressante est disponible lorsque vous utilisez simultanément l'explosion/implosion et la manipulation de tableaux.

Si vous utilisez toutes les fonctionnalités de PHP, la recherche dans une chaîne prend facilement une dimension sémantique, dépasse la syntaxe habituelle et devient une raison pour acquérir un réel sens. Manipuler le sens est plus familier pour une personne, plus sûr pour un algorithme, et transformer des chaînes en objets est comme une transition des codes machine vers le monde des langages de programmation modernes.

Disons que nous devons trouver une sous-chaîne dans une chaîne en utilisant php.

Divers outils conviennent pour résoudre ce problème.

Trouver une sous-chaîne à l'aide de la fonction strpos

La fonction strpos renvoie la position de la première occurrence d'une sous-chaîne.

$machaîne = "abc" ; $trouve-moi = "a"; $pos = strpos($machaîne, $findme); // Notez que === est utilisé. Utiliser == ne produira pas le résultat correct // car "a" est à la position zéro. if ($pos === false) ( echo "La chaîne "$findme" n'a pas été trouvée dans la chaîne "$mystring""; ) else ( echo "La chaîne "$findme" a été trouvée dans la chaîne "$mystring" "; echo " en position $pos"; )

La fonction renvoie soit le numéro de série du premier caractère de la sous-chaîne dans la chaîne source, soit false si rien n'est trouvé.

Il existe un analogue insensible à la casse pour cette fonction : stripos

Une autre fonction pour cette tâche : strrpos. Il trouve la dernière occurrence de la sous-chaîne.
Bien entendu, il existe également une variante insensible à la casse : strripos

Si la fonction strpos ne convient pas à votre objectif, recherchez un autre outil.
Il existe également de nombreuses fonctions pour travailler avec des chaînes que vous devez connaître : des fonctions pour travailler avec des chaînes.

Trouver une sous-chaîne à l'aide de la fonction preg_match

Cette fonction recherche une sous-chaîne à l'aide d'une expression régulière.

Une expression régulière est un modèle comparé à une chaîne. Un modèle peut contenir plusieurs lignes différentes à la fois.

Ils sont utiles si vous devez effectuer une recherche non pas par une sous-chaîne spécifique, mais pour trouver toutes les chaînes dont les propriétés sont décrites à l'aide d'une expression régulière. Connaître ce sujet élargit considérablement votre capacité à travailler avec des chaînes.

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.

Supprimer automatiquement les 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 modèle spécifique

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));

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
  • strrchr
  • 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 au début et à 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 en 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 =+=+= Tabe 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. La syntaxe de la fonction trim() est :

    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 illustre 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
    "; // Notez 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. La syntaxe de la fonction strpos() est :

    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. La syntaxe de la fonction strstr() est :

    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. La syntaxe de la fonction htmlspecialchars() est :

    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 conjointement 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, c'est une fonction très utile qui mérite d'être mentionnée. 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 comprend 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"; $last = substr(strrchr($text, 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 ("), la barre oblique inverse (\) 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 que j'ai conçue était tout naturellement parfaite, c'était une œuvre d'art - impeccable, sublime. Un triomphe égalé uniquement par 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 repensé en me basant sur votre histoire pour refléter plus précisément les diverses grotesques de votre nature. échec.", 20);

    > La première Matrix que j'ai > conçue était tout à fait > 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.


    Lire la suite : Programmation objet en PHP
    .