Maison  >  Article  >  développement back-end  >  Expression régulière PHP en action : faire correspondre des documents XML

Expression régulière PHP en action : faire correspondre des documents XML

王林
王林original
2023-06-22 10:39:12907parcourir

Avec le développement d'Internet, les documents XML sont de plus en plus courants, nous devons donc comprendre comment utiliser les expressions régulières pour faire correspondre le contenu des documents XML. Cet article vous présentera l'application pratique des expressions régulières PHP pour aider les développeurs à mieux traiter et analyser les documents XML.

Qu'est-ce qu'un document XML ?

XML (Extensible Markup Language) est un langage de balisage utilisé pour stocker et transmettre des données. Les documents XML sont constitués de balises, d'attributs et de contenu. Les balises sont des descriptions utilisées pour identifier les données, les attributs sont des informations spéciales dans les balises et le contenu est les données décrites par les balises.

Par exemple :

<book genre="mystery">
   <title>The Hound of the Baskervilles</title>
   <author>Arthur Conan Doyle</author>
   <price>5.99</price>
</book>

Ici book est la balise, genre est l'attribut, The Hound des Baskervilleest content. Les documents XML peuvent contenir n'importe quel nombre de balises, d'attributs et de contenu. book是标签,genre是属性,The Hound of the Baskervilles是内容。XML文档中可以包含任意数量的标签、属性和内容。

如何使用PHP正则表达式匹配XML文档?

在PHP中,可以使用preg_match()函数来匹配XML文档。该函数需要三个参数:正则表达式、要匹配的字符串和一个可选的数组,用于存储匹配结果。

下面是一个例子,该例子演示了如何使用正则表达式来匹配XML文档中的标签:

$xml = '<book genre="mystery">
           <title>The Hound of the Baskervilles</title>
           <author>Arthur Conan Doyle</author>
           <price>5.99</price>
        </book>';

$pattern = '/<([a-zA-Z0-9]+)>/';

preg_match($pattern, $xml, $matches);

print_r($matches);

输出结果如下:

Array
(
    [0] => <book>
    [1] => book
)

这里的正则表达式/9e57713c5d37d2d6d4d698166f96244f/可以匹配XML文档中的标签。([a-zA-Z0-9]+)表示匹配一个或多个大小写字母和数字字符。637dade88b2e55fa23a9dd8b003912dc表示标签的开始和结束。

在匹配过程中,preg_match()函数会搜索字符串中符合正则表达式的子串,并将匹配的结果存储在$matches数组中。$matches[0]表示整个符合正则表达式的子串,$matches[1]表示正则表达式中第一个括号内的子串。

下面是一些其他常用的正则表达式:

匹配属性:

$pattern = '/([a-zA-Z]+)="([^"]+)"/';

preg_match($pattern, $xml, $matches);

print_r($matches);

输出结果如下:

Array
(
    [0] => genre="mystery"
    [1] => genre
    [2] => mystery
)

这里的正则表达式/([a-zA-Z]+)="([^"]+)"/可以匹配XML文档中的属性。([a-zA-Z]+)表示匹配一个或多个大小写字母,="表示属性的开始,([^"]+)表示匹配除双引号之外的任意字符,"表示属性的结束。

匹配内容:

$pattern = '/<title>([^<]+)</title>/';

preg_match($pattern, $xml, $matches);

print_r($matches);

输出结果如下:

Array
(
    [0] => <title>The Hound of the Baskervilles</title>
    [1] => The Hound of the Baskervilles
)

这里的正则表达式/b2386ffb911b14667cb8f0f91ea547a7([^5fdde8e76f2e6499112bdf9087bded19/可以匹配XML文档中b2386ffb911b14667cb8f0f91ea547a7标签的内容。([^00d9d8fa7dc1827d67a48c8f554d6f31表示匹配6e916e0f7d1e588d4f442bf645aedb2f

Comment faire correspondre des documents XML à l'aide d'expressions régulières PHP ?

En PHP, vous pouvez utiliser la fonction preg_match() pour faire correspondre les documents XML. Cette fonction prend trois paramètres : l'expression régulière, la chaîne à rechercher et un tableau facultatif pour stocker les résultats de la correspondance.

Voici un exemple qui montre comment utiliser des expressions régulières pour faire correspondre les balises dans des documents XML : #🎜🎜#rrreee#🎜🎜#Le résultat est le suivant : #🎜🎜#rrreee#🎜 🎜# L'expression régulière /9e57713c5d37d2d6d4d698166f96244f/ ici peut correspondre aux balises des documents XML. ([a-zA-Z0-9]+) signifie faire correspondre une ou plusieurs lettres majuscules et minuscules et des caractères numériques. 798c10339a0140948f8fe23015ba7123 représentent le début et la fin des balises. #🎜🎜##🎜🎜#Pendant le processus de correspondance, la fonction preg_match() recherchera les sous-chaînes qui correspondent à l'expression régulière dans la chaîne et stockera les résultats correspondants dans $matches dans le tableau. <code>$matches[0] représente la sous-chaîne entière qui correspond à l'expression régulière, et $matches[1] représente la sous-chaîne entre la première parenthèse de l'expression régulière. #🎜🎜##🎜🎜#Voici quelques autres expressions régulières couramment utilisées : #🎜🎜##🎜🎜# Attributs correspondants : #🎜🎜#rrreee#🎜🎜#Le résultat est le suivant : #🎜🎜#rrreee#🎜 🎜 #L'expression régulière ici /([a-zA-Z]+)="([^"]+)"/ peut correspondre aux attributs des documents XML. ([a- zA -Z]+) signifie faire correspondre une ou plusieurs lettres majuscules et minuscules, =" signifie le début de l'attribut, ([^"]+) signifie matching N'importe quel caractère sauf les guillemets doubles, " indique la fin de l'attribut. #🎜🎜##🎜🎜# Contenu correspondant : #🎜🎜#rrreee#🎜🎜#Le résultat de sortie est le suivant : #🎜🎜#rrreee#🎜🎜#L'expression régulière ici/b2386ffb911b14667cb8f0f91ea547a7([ ^&lt ;]+)6e916e0f7d1e588d4f442bf645aedb2f/ peut correspondre au contenu de la balise b2386ffb911b14667cb8f0f91ea547a7 dans le document XML. ([^<]+) signifie correspondre à n'importe quel caractère sauf le signe inférieur, 6e916e0f7d1e588d4f442bf645aedb2f signifie correspondre à 6e916e0f7d1e588d4f442bf645aedb2f La fin de la balise code>. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜# Les expressions régulières PHP sont des outils très utiles lors du traitement de documents XML. En utilisant des expressions régulières, nous pouvons facilement faire correspondre, extraire et traiter des données dans des documents XML. Il convient toutefois de noter que les expressions régulières ne sont pas très efficaces. Lorsqu'il s'agit de documents XML volumineux, il est recommandé d'utiliser un analyseur XML spécialisé pour traiter les données. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn