вторник, 21 декабря 2010 г.

Regular expression. Dars 3

Biz ikkinchi darsda qatorlarni tekshirishni ko'rib chiqdik. Endi RegEx yordamida bir paytning o'zida qatorni tekshirsh hamda uning ichidan kerakli qismlarini qirqib olishni hamda RegEx yordamida qatordagi belgilarni boshqa bir belgilarga almashtirishni ko'rib chiqamiz. Buning uchun PHP da preg_match_all va preg_replace funksiyalarini ishlatamiz.

Keling oldimizga oddiyroq bitta masalani qo'yaylik.
1-misol: Qatordagi raqamlarni ajaratib olaylik masalasini qo'ysak.
Bizga quyidagi qator berilgan.
$str = "Salom 123dunyo777."

Keling shu qatordagi raqamlarni qirqib oladigan PHP kod yozaylik.
$match = array();
preg_match_all("/\d+/", $str, $match);
var_dump($match);


Natija:
array(1) {
    [0]=>
    array(2) {
        [0]=> string(3) "123"
        [1]=> string(3) "777"
    }
}


Huddi shunga o'xshab, shu sonlarni boshqa bir qatorga o'zgaritirsh lozim bo'lib qolsa!
$str = preg_replace("/\d+/", "Yangi qator", $str)

Ko'rib turganingizdek oldingi darslardan chetlashmagan holda, faqat boshqa funksiyalardan foydalandik. Keling yana bir oddiyroq misol ko'raylik.
2-misol. Barcha HTML teglarini ajratib olish lozim bo'lsin.

$str = "<b>Bold</b><i>Italictext</i>"
$match = array();
preg_match_all("/(\<[^>]+\>)/", $str, $match);
print_r($match);


Natija:
Array
(
[0] => Array
(
[0] => <b>
[1] => </b>
[2] => <i>
[3] => <span>
[4] => </span>
[5] => </i>
)

[tags] => Array
(
[0] => <b>
[1] => </b>
[2] => <i>
[3] => <span>
[4] => </span>
[5] => </i>
)

[1] => Array
(
[0] => <b>
[1] => </b>
[2] => <i>
[3] => <span>
[4] => </span>
[5] => </i>
)
)


Ushbu misolda yana bir qo'shimcha qo'shdik. (?<tags>...) - guruhlashlarda, shu guruhga tegishli bo'lgan natijalarni son (index) ko'rinishida emas, boshqacha nom bilan atashga imkin beradi. Agar ?<tags> ni yozmasak, natijadagi tags indeksli natija yo'qoladi.

Shuning bilan bu darsimiz ham oxiriga yetdi.

Комментариев нет:

Отправить комментарий