Utilisation d'expressions régulières en PHP PHP expressions régulières - Partie VII Introduction Nous avons vu certaines utilisations des expressions régulières en PHP. Nous savons comment vérifier si une expression régulière se trouve dans la chaîne sujet. Nous savons comment trouver la position de regex correspond dans la chaîne de l'objet. Notez que la chaîne de sujet peut être toute une page de texte. Dans cette partie de la série, nous allons apprendre deux caractéristiques importantes intitulé "Rechercher et remplacer" et "L'opération de Split".
Avant de quitter cette partie, nous allons parler de la délimitation de regex. Commençons avec une section très petites appelées variables de Regex. Variable dans Regex Avant de nous pencher sur les deux caractéristiques, soyons conscients que le modèle regex peut avoir des variables. Le code suivant fonctionne: $ var = "h"; $ var = "h"; if (preg_match ("/I $ var /", "Je suis le seul.")) echo "correspondance". "Else echo" ne correspond pas> Ici, nous avons la variable, $ var = "h" ".
"?; L'expression rationnelle est /I $ var /qui est /je /"je" dans le pattern est remplacée par $ var; et l'appariement se produit Rechercher et remplacer Vous pouvez rechercher une correspondance dans la chaîne de l'objet et d'avoir les sous chaînes qui correspondent remplacés. Considérez la chaîne sujet suivant: «Je suis un homme Vous êtes un homme.». La sous-chaîne "homme" se produit dans ce sujet en deux endroits. Vous pouvez avoir toutes les occurrences de la chaîne sous "l'homme" remplacé à la femme. Le code suivant fait cela: $ finalStr = preg_replace ("/homme /", "femme", ".
Je suis un homme Vous êtes un homme.»); echo $ finalStr; ?> Vous avez la fonction, preg_replace (). Le premier argument de cette fonction est l'expression rationnelle. Le deuxième argument est la chaîne de sous pour remplacer la chaîne sous compensée par l'expression rationnelle. Le troisième argument est l'objet. Cette fonction renvoie la chaîne sujet dans lequel tous les sous chaînes appariés ont été remplacés. Si aucune correspondance a eu lieu, la chaîne originale est renvoyée. Si une erreur a été commise, NULL est retourné.
La deuxième déclaration du code ci-dessus fait écho à la chaîne renvoyée. Ceci est ce qui se fait l'écho: je suis une femme. Tu es une femme. Ainsi, vous pouvez utiliser la fonction preg_replace () pour rechercher des sous cordes par une expression régulière et avoir toutes les chaînes trouvées sous remplacé par une chaîne de caractères de remplacement sous. Le remplacement de chaîne de sous est le deuxième argument de la fonction. Si il ya beaucoup de matchs, il est possible pour vous de remplacer certains d'entre eux, en commençant par le premier.
Pour cela, vous avez besoin d'un quatrième argument optionnel. Considérez le sujet suivant: «Je suis un homme Vous êtes un homme Cette personne est un homme..." Il ya trois occurrences du mot, «l'homme». Ayons seuls les deux premiers remplacé. Ce code suivant fait cela: $ finalStr = preg_replace ("/homme /", "femme", ". Je suis un homme Vous êtes un homme Cette personne est un homme..", 2); echo $ finalStr; ?> Un quatrième argument a été ajouté. Nous voulons que les deux premières occurrences de la chaîne de sous, "l'homme" à être remplacés, alors nous avons mis 2 en quatrième argument.
Le quatrième argument est le nombre d'occurrences du match, vous voulez remplacer. La deuxième déclaration dans le code ci-dessus fait écho à la chaîne résultante que, je suis une femme. Tu es une femme. Cette personne est un homme. Cette quatrième argument est facultatif. Si vous mettez -1 là, il signifie que vous voulez toutes les occurrences de la chaîne sous adapté à être remplacés; ceci est le comportement par défaut en l'absence de l'-1. L'exemple suivant illustre l'utilisation de l'-1.
$ finalStr = preg_replace ("/homme /", "femme", "Je suis un homme Vous êtes un homme Cette personne est un homme...", -1); echo $ finalStr; ?> La sortie du code est: je suis une femme. Tu es une femme. Cette personne est une femme. Jusqu'ici, nous avons vu la fonction preg_match (), la fonction de preg_match_all () et maintenant la fonction preg_replace (). Compter le nombre de remplacement rendus Il ya un cinquième argument optionnel pour la fonction preg_replace (). Ceci est une variable. Vous choisissez le nom que vous voulez pour la variable.
Le code suivant illustre cela: $ finalStr = preg_replace ("/homme /", "femme", "Je suis un homme Vous êtes un homme Cette personne est un homme...", 2, $ count); echo $ finalStr. "echo $ count." ?> Regardez les arguments de la fonction très bien. Le premier argument est l'expression rationnelle. La seconde est la chaîne de remplacement. Le troisième est l'objet; il a trois occurrences du mot, «l'homme». La quatrième donne le nombre de remplacement que nous voulons; il est 2. Le cinquième est la variable qui va contenir le nombre de remplacements réellement effectués.
La sortie du code est, je suis une femme. Tu es une femme. Cette personne est un homme. 2 Le quatrième argument voulait deux remplacements et deux remplacements ont été effectués. La dernière instruction dans le code affiche le nombre de remplacement est en réalité; il affiche la valeur de la variable, qui est la cinquième argument. Il est pas nécessaire pour vous d'avoir déclaré cette variable ailleurs, avant. Il est possible que vous ne savez pas le nombre de matchs dans le sujet, et vous voulez remplacer toutes les correspondances possibles et de savoir le nombre de remplacement.
Dans ce cas, le quatrième argument sera -1 et vous devrez le cinquième argument. Le code suivant illustre cela: $ finalStr = preg_replace ("/homme /", "femme", "Je suis un homme Vous êtes un homme Cette personne est un homme...", -1, $ Count); echo $ finalStr. "echo $ count." ?> Voici tous les matchs seraient remplacés et $ count tiendraient le nombre de remplacement, après l'exécution de la fonction. La sortie du code ci-dessus est, je suis une femme. Tu es une femme. Cette personne est une femme. 3 Trois est le nombre de remplacement fait. L'opération de Split Il ya une fonction pour cela.
Une syntaxe de la fonction est: array preg_split (string $ regex, string $ sujet) La fonction preg_split de split () divise une chaîne en un tableau de sous chaînes et retourne le tableau. Il utilise une expression régulière comme séparateur. Soyez défaut l'expression rationnelle est pas tout élément du tableau retourné. Considérez la chaîne sujet suivant: $ subject = "un deux trois»; Si nous savons que le modèle de regex pour identifier espace entre les mots, alors nous pouvons diviser cette chaîne dans un tableau composé des mots, "un", "deux" et "trois".
\\ Est la classe de caractères pour l'espace. \\ + Va correspondre à un espace, une ou plusieurs fois. Le regex pour séparer les mots ci-dessus est \\\\ + \\ Nous supposons que l'espace pourrait être créé en frappant la barre d'espacement plus d'une fois. Le code suivant illustre l'utilisation de la fonction de split avec le modèle ci-dessus. $ subject = "un deux trois»; $ arr = preg_split ("/\\ + /", $ subject); echo $ arr [0]. "echo $ arr [1]." .? echo $ arr [2] "> Dans la chaîne de sujet, les mots sont séparés par des espaces La sortie du code ci-dessus est:.
un deux trois Le déversé fonction a divisé les mots dans la chaîne de sujet en utilisant l'espace entre les mots, et de mettre chaque mot comme un élément du tableau retourné Il est possible d'avoir des mots dans une chaîne séparée par une virgule et un espace, comme $ subject = "un, deux, trois»; l'expression rationnelle de séparer ces mots est:. /, \\ + /Le code suivant illustre cela: $ subject = "un, deux, trois»; $ arr = preg_split ("/, \\ + /", $ subject); echo $ arr "[0]. echo $ arr [1]. "echo $ arr [2].
" ?> La sortie du code ci-dessus est: un deux trois Une syntaxe simplifiée de la preg_replace () est: $ StrWithRepl = preg_replace (string regex, string $ remplacement, string $ sujet); De l'explication que je l'ai donnée avant, la syntaxe est ici explicite. Les séparateurs doivent vous utilisez toujours les //délimiteurs de cette expression rationnelle? N ° PHP vous donne la possibilité d'utiliser des séparateurs de votre choix.
La suivante expressions, chacun produit un match: preg_match ("! World", "Bonjour tout le monde") preg_match ("{World}", "Bonjour tout le monde") preg_match ("'Monde'", "Bonjour tout le monde") Le //séparateurs par défaut pour un match peuvent être changés pour des délimiteurs arbitraires. Dans le premier exemple, les délimiteurs sont !!. Dans la deuxième expression sont les délimiteurs {}. Dans le troisième exemple, les délimiteurs sont ''. Le code suivant illustre le troisième cas: if (preg_match ("'Monde'", "Bonjour tout le monde")) echo "matched". "Else echo" ne correspond pas ".
"?>