Regex Ruang Putih Pilihan: Mengabaikan Ruang dalam Nilai Atribut
Dalam pengaturcaraan, terdapat senario di mana anda perlu mengendalikan keadaan di mana rentetan mengandungi ruang putih pilihan . Ini mungkin mencabar apabila menulis ungkapan biasa untuk mengekstrak data dengan tepat.
Pertimbangkan kod berikut:
# Get Image data preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch); $image = $imagematch[4];
Kod ini mengekstrak atribut src imej daripada penanda HTML. Walau bagaimanapun, ia gagal mengendalikan kes di mana tiada ruang kosong antara atribut tertentu, seperti:
<code class="html"><a href="/wiki/File:Sky1.png" title="File:Sky1.png"><img alt="Sky1.png" src="http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png"width="150" height="84"></a></code>
atau
<code class="html"><a href="/wiki/File:TallGrass.gif" title="File:TallGrass.gif"><img alt="TallGrass.gif" src="http://media-mcw.cursecdn.com/3/34/TallGrass.gif" width="150"height="150"></a></code>
Untuk menangani isu ini, kami boleh menggunakan regex ruang kosong pilihan. Ini membolehkan kita mengabaikan ruang di antara aksara. Begini caranya:
#<a href\s?="(.*?)" title\s?="(.*?)"><img alt\s?="(.*?)" src\s?="(.*?)"[\s*]width\s?="150"[\s*]height\s?="(.*?)"></a>#
Dalam ungkapan biasa yang dikemas kini ini:
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ruang Putih Pilihan dalam Ungkapan Biasa untuk Pengekstrakan Data Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!