⊗ppPmRgCPN 257 of 447 menu

Nombor Am Pockets dalam Regex PHP

Pertimbangkan situasi berikut. Katakan kita mempunyai pembolehubah dengan tahun, yang boleh berubah dari 1990 hingga 2099. Katakan kita ingin mendapatkan dua digit terakhir tahun dalam pocket. Mari tulis regex yang sepadan:

<?php $reg = '#19(9\d)|20(\d\d)#'; ?>

Walau bagaimanapun, satu ketidakselesaan menanti kita di sini. Masalahnya ialah untuk abad yang lalu, dua digit akan masuk ke pocket pertama, manakala untuk abad kedua - ke pocket kedua. Mari lihat dengan contoh.

Ini ialah varian pertama:

<?php $str = '1991'; preg_match($reg, $str, $res); var_dump($res); // [1 => '91'] ?>

Dan ini ialah varian kedua:

<?php $str = '2021'; preg_match($reg, $str, $res); var_dump($res); // [2 => '21'] ?>

Sekarang katakan kita ingin menulis digit tahun yang ditemui ke dalam pembolehubah. Kita akan menghadapi masalah, kerana kita tidak tahu dengan tepat kunci mana untuk mengambil data dari pocket:

<?php $year = $res[1]; // perlukan kunci sama ada 1, atau 2 ?>

Masalah boleh diselesaikan dengan syarat:

<?php if (!empty($res[1])){ $year = $res[1]; } else{ $year = $res[2]; } ?>

Walau bagaimanapun, terdapat penyelesaian yang lebih mudah. Boleh gunakan perintah khas (?| ). Semua pocket yang berada di dalamnya akan mempunyai satu nombor.

Mari betulkan regex kami

<?php $reg = '#(?|19(9\d)|20(\d\d))#'; ?>

Dan sekarang tahun kami pasti akan berada dalam pocket nombor satu:

<?php $year = $res[1]; ?>

Diberi rentetan dengan tarikh, di mana tahun boleh berubah dari 1990 hingga 2099:

<?php $arr = [ '31-12-2025', '30-11-1995', '29-10-1990', ]; ?>

Untuk setiap tarikh, letakkan hari dalam pocket pertama, bulan dalam pocket kedua, dan dua digit terakhir tahun - dalam pocket ketiga.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak