Maison > Article > développement back-end > Expression régulière PHP en action : faire correspondre des documents XML
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 Baskerville
est 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
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([ ^< ;]+)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!