Sampel kod menggunakan ungkapan biasa PHP untuk menghuraikan dan memproses HTML/XML
Pengenalan:
Ekspresi biasa ialah alat pemadanan corak teks yang berkuasa yang boleh digunakan semasa memproses data berstruktur seperti HTML dan XML Menyediakan penghuraian dan pemprosesan yang mudah keupayaan. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk menghuraikan dan memproses HTML/XML serta memberikan contoh kod yang berkaitan.
1. Pengekstrakan tag HTML
Apabila memproses HTML, selalunya perlu untuk mengekstrak semua tag HTML daripada teks. Kita boleh menggunakan fungsi ungkapan biasa PHP preg_match_all untuk mencapai fungsi ini. Berikut ialah contoh kod:
<?php $html = "<div id='container'><h1>标题</h1><p>内容</p></div>"; $pattern = "/<[^>]+>/"; preg_match_all($pattern, $html, $matches); foreach ($matches[0] as $tag) { echo $tag . " "; } ?>
Dalam kod di atas, kami menggunakan ungkapan biasa /<[^>]+>/
untuk memadankan kandungan dalam kurungan sudut, iaitu, tag HTML. Melalui fungsi preg_match_all, semua teg yang dipadankan disimpan dalam pembolehubah $matches dan dilalui untuk mencetaknya. /<[^>]+>/
来匹配尖括号中的内容,即HTML标签。通过preg_match_all函数,将所有匹配到的标签保存在$matches变量中,并遍历打印出来。
二、HTML标签的属性提取
除了提取HTML标签以外,有时候还需要提取HTML标签中的属性。我们可以使用PHP的正则表达式函数preg_match来实现这个功能。下面是一个示例代码:
<?php $html = "<a href='http://www.example.com' target='_blank'>链接</a>"; $pattern = "/<as+.*?>/i"; preg_match($pattern, $html, $matches); if (isset($matches[0])) { $tag = $matches[0]; $pattern = "/href=['"](.*?)['"]/i"; preg_match($pattern, $tag, $hrefMatches); if (isset($hrefMatches[1])) { $href = $hrefMatches[1]; echo "链接地址:" . $href . " "; } } ?>
以上代码中,我们首先使用正则表达式/<as+.*?>/i
匹配a标签,并使用preg_match函数将匹配到的标签保存在$matches变量中。然后,我们再使用正则表达式/href=['"](.*?)['"]/i
匹配href属性,并使用preg_match函数将匹配到的属性值保存在$hrefMatches变量中。最后,我们获取到属性值后打印出来。
三、XML节点的提取
和HTML类似,我们也可以使用PHP的正则表达式来提取XML中的节点。下面是一个示例代码:
<?php $xml = "<root><item id='1'>内容1</item><item id='2'>内容2</item></root>"; $pattern = "/<items+.*?>/i"; preg_match_all($pattern, $xml, $matches, PREG_SET_ORDER); foreach ($matches as $match) { $tag = $match[0]; $pattern = "/id=['"](.*?)['"]/i"; preg_match($pattern, $tag, $idMatches); if (isset($idMatches[1])) { $id = $idMatches[1]; echo "ID:" . $id . " "; } } ?>
以上代码中,我们首先使用正则表达式/<items>/i</items>
匹配item节点,并使用preg_match_all函数将匹配到的节点保存在$matches变量中。然后,我们再使用正则表达式/id=['"](.*?)['"]/i
Selain mengekstrak tag HTML, kadangkala perlu juga untuk mengekstrak atribut dalam tag HTML. Kita boleh menggunakan fungsi ekspresi biasa PHP preg_match untuk mencapai fungsi ini. Berikut ialah contoh kod:
rrreee
/<as>/i</as>
untuk memadankan teg dan menggunakan fungsi preg_match untuk padankan teg Disimpan dalam pembolehubah $matches. Kemudian, kami menggunakan ungkapan biasa / href=['"](.*?)['"]/i
untuk memadankan atribut href dan menggunakan fungsi preg_match untuk menyimpan nilai atribut yang dipadankan dalam dalam pembolehubah $hrefMatches. Akhirnya, kami mendapat nilai atribut dan mencetaknya. 🎜🎜3. Pengekstrakan nod XML 🎜Serupa dengan HTML, kami juga boleh menggunakan ungkapan biasa PHP untuk mengekstrak nod dalam XML. Berikut ialah contoh kod: 🎜rrreee🎜Dalam kod di atas, kami mula-mula menggunakan ungkapan biasa /<items>/i</items>
untuk memadankan nod item dan menggunakan fungsi preg_match_all untuk memadankan nod yang Disimpan dalam pembolehubah $matches. Kemudian, kami menggunakan ungkapan biasa / id=['"](.*?)['"]/i
untuk memadankan atribut id dan menggunakan fungsi preg_match untuk menyimpan nilai atribut yang dipadankan dalam dalam pembolehubah $idMatches. Akhirnya, kami mendapat nilai atribut dan mencetaknya. 🎜🎜Kesimpulan: 🎜Di atas ialah kod sampel yang menggunakan ungkapan biasa PHP untuk menghuraikan dan memproses HTML/XML. Melalui fungsi kuat ungkapan biasa, kami boleh mengekstrak dan memproses teg dan atribut dengan mudah dalam HTML/XML untuk mencapai pemprosesan data berstruktur yang fleksibel. Saya harap artikel ini akan membantu anda memahami aplikasi ungkapan biasa dalam pemprosesan HTML/XML. 🎜Atas ialah kandungan terperinci Contoh kod untuk menghuraikan dan memproses HTML/XML menggunakan ungkapan biasa PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!