Php int-ийн утгыг шалгаж байна. Тоон илэрхийлэлийг тогтмол шалгаж байна. PHP хэл дээрх хувьсагч бүхэл тоо эсэхийг шалгаж байна

Зохиогчоос: Сайн байцгаана уу найзуудаа. Энэ нийтлэлд бид тогтмол илэрхийллийн чадамжийг шууд судалж, PHP дахь preg_match() функцтэй танилцаж, мөн тоог шалгах анхны тогтмол илэрхийлэл үүсгэх болно.

Тогтмол хэллэг нь тексттэй ажиллах маш хүчирхэг хэрэгсэл байдаг тул энэ өгүүллийг эхлүүлэх нь зүйтэй болов уу. Та аль хэдийн мэдэж байгаачлан ердийн хэллэгүүдийн тусламжтайгаар бид текстийн массиваас ямар ч зүйлийг шууд утгаараа олж чадна. Гэхдээ ийм эрх мэдлийг урвуулан ашиглаж болохгүй. PHP нь мөр, төрөл гэх мэт олон функцуудыг санал болгодог бөгөөд энэ нь жишээлбэл, мөрөнд тодорхой тэмдэгт эсвэл дэд мөр байгаа эсэхийг шалгах боломжийг олгодог гэдгийг бүү мартаарай.

Тиймээс, хэрэв ердийн илэрхийлэл ашиглахгүйгээр асуудлыг шийдэх боломжтой бол ердийн илэрхийлэлтэй ажиллах функц нь ихэвчлэн илүү их нөөц шаарддаг тул энэ боломжийг ашиглах нь зүйтэй. Энэ тохиолдолд асуудлыг байнгын илэрхийлэлгүйгээр шийдэж болно. Жишээлбэл, та ctype_digit() функцийг ашиглан мөр дэх бүх тэмдэгтүүд тоон шинжтэй эсэхийг шалгаж болно.

Гэхдээ нийтлэлд тавигдсан даалгаврын нөхцлийн дагуу бид тогтмол илэрхийлэл ашиглах шаардлагатай тул preg_match() функцийг ашиглан даалгаврыг шийдэх болно. Энэ функц нь мөрийг ердийн илэрхийллийн загвартай харьцуулдаг. Функц нь 5 параметртэй бөгөөд практикт зөвхөн эхний 2 параметрийг бараг үргэлж ашигладаг.

Функцийн эхний параметр нь тогтмол илэрхийллийн загвар байх болно. Хоёр дахь нь шалгаж байгаа мөр юм. Заримдаа бид хайлтын илэрц бүхий массивыг авахыг зааж өгөх гуравдахь параметр хэрэгтэй байж магадгүй юм.

Анхны загвараа бүтээцгээе. Энэ нь иймэрхүү харагдаж болно:

$pattern = "#^+$#";

$pattern = "#^+$#" ;

Эхлээд харахад энэ нь ойлгомжгүй, зарим талаараа аймшигтай мэт санагдаж магадгүй юм. Гэсэн хэдий ч энд ямар ч аймшигтай зүйл байхгүй, одоо бид үүнийг харах болно. Тогтмол хэллэг нь тусгай тэмдэгт гэж нэрлэгддэг тэмдэгтүүдийг идэвхтэй ашигладаг гэдгээс эхэлцгээе. мета тэмдэгтүүд. Манай загварт маш олон зүйл бий:

^ — мөрийн эхлэлийн мета тэмдэгт

$ - мөрийн төгсгөлийн мета тэмдэгт

- тэмдэгтийн ангийн мета тэмдэгтүүд

+ нь тэмдэгт эсвэл бүлэг тэмдэгтүүдийн 1 ба түүнээс дээш удаа тохиолдохыг илэрхийлдэг тоон үзүүлэлт юм.

Тэгэхээр бид юу авсан бэ? Та зохиосон тогтмол илэрхийллийн загварыг хэрхэн унших вэ? Тэгээд ингэж уншина.

Эхнээс нь дуустал бүх мөрийг баталгаажуулна (мета тэмдэгт ^$)

мөрөнд зөвхөн 0-ээс 9 хүртэлх тоог агуулж болно ()

мөрөнд дор хаяж нэг цифр (+) байх ёстой.

Одоо загварыг ажиллаж байгаа эсэхийг шалгацгаая.

Таны харж байгаагаар ердийн илэрхийлэл зөв ажиллаж байна. Түүний доор зөвхөн тооноос бүрдсэн мөрүүд багтана. Дашрамд хэлэхэд, хэрэв та мөн regexr.com сайт дээр туршилт хийж байгаа бөгөөд текстэд нэгээс олон мөр байгаа бол загварт зориулсан тусгай туг - m-ийг зааж өгөх хэрэгтэй бөгөөд энэ нь загвар нь олон файлтай ажиллах боломжийг олгоно. мөрийн текст. Та үүнийг баруун дээд буланд, цэсийн зүйлийн тугуудаас хийж болно.

Хэрэв бид мөрийн эхлэл ба/эсвэл төгсгөлийн мета тэмдэгтүүдийг устгавал юу болохыг анхаарна уу:

Одоо бид мөрийг бүхэлд нь баталгаажуулаагүй, зүгээр л мөрөнд ямар нэг зүйлийг хайж байна. Үүний үр дүнд гурав дахь мөрөнд тоонууд олдсон боловч асуудлын нөхцлийн дагуу энэ мөр бидэнд тохирохгүй байна. Одоо preg_match функцийг ашиглаад мөр бүрийг тус тусад нь шалгацгаая.

$arr = ["123", "тест", "45ew45", "456"]; $pattern = "#^+$#"; foreach($arr as $item)( if(preg_match($pattern, $item))( echo "

$item мөр нь зөвхөн тоонуудыг агуулна

"; )өөрөөр( цуурай "

$зүйлийн мөр тохиромжгүй байна

"; } }

$arr = [ "123" , "тест" , "45ew45" , "456" ] ;

$pattern = "#^+$#" ;

foreach ($arr $ зүйл) (

Одоогоор сайт дээр шинэ булан нээх идэвхтэй ажил хийгдэж байна. Үүний тулд зарим скрипт бичихдээ хувьсагчдыг тоогоор шалгах шаардлагатай болсон. Зөвхөн тоо биш (эцсийн эцэст 1.5 бол бас тоо), харин бүхэл тоо. Тэгээд би энэ шалгалтыг ингэж хийсэн.

PHP хэл дээрх хувьсагч бүхэл тоо эсэхийг шалгаж байна

PHP дээр тоо бүхэл тоо эсэхийг шалгахын тулд бид ердийн илэрхийлэл ашигладаг:

Үүний дагуу, хэрэв хувьсагч нь бүхэл тоо бол бид шаардлагатай үйлдлийг гүйцэтгэдэг ба эсрэгээр.

JavaScript дээр хувьсагч бүхэл тоо эсэхийг шалгаж байна

JavaScript дээр бүх зүйл арай өөр бөгөөд энд бид өөрсдийн жижиг функцийг бичих хэрэгтэй:

Функцийн дугаар_скан(тоо) ( буцах (тоо ^ 0) === тоо; )

мөн туршилтанд ашиглах:

функцийн дугаар_скан(тоо) ( буцах (тоо ^ 0) === тоо; ) var number = "1.3"; if(number_scan(тоо)) ( // Хэрэв тоо нь бүхэл тоо бол үйлдэл) else ( // Хэрэв тоо бутархай эсвэл хувьсагч огт тоо биш бол үйлдэл)

Энд ч гэсэн хувьсагч бүхэл тоотой тэнцүү бол танд хэрэгтэй үйлдлийг гүйцэтгэх ба эсрэгээр.

Жишээлбэл, дараах хаягийг авна уу: http://example.com/price.php?product=859844&page=99.

Скрипт нь бүтээгдэхүүний бүтээгдэхүүний дэлгүүрүүдийн үнийн жагсаалтыг харуулдаг нэмэлт хуудасны параметр нь хуудасны дугаарыг зааж өгдөг. Хэрэв хуудас заагаагүй бөгөөд url нь http://example.com/price.php?product=859844 шиг байвал бид эхний хуудсыг харуулна.

PHP 5.2.0-ээс өмнө асуудлыг ийм энгийн аргаар шийдэж болно.

// Натурал тоо болох параметрийг авах функц // $arr = параметрийн массив ($GET эсвэл $POST), $name = параметрийн нэр, // Функц нь параметрийн утгыг буцаана, эсвэл $default Хэрэв параметр байхгүй эсвэл буруу функц байвал get_param_nat($ arr, $name, $default=null) ( хэрэв (!isset($arr[$name])) буцаана $default; // Маш энгийн аргаар шалгана уу. параметрийг тоонд шилжүүлж, дараа нь мөр рүү буцна уу // Хэрэв бүх зүйл хэвийн бол гарч буй мөр нь параметрийн анхны утгатай тохирч байх ёстой $val = $arr[$name] $intval = intval($val); Хэрэв (strval($intval) != = $val || $intval) бидэнд байгаа тоо тэгээс их байгаа эсэхийг шалгана.< 1) return $default; return $intval; } // Проверяем параметр product if (($product = get_param_nat($_GET, "product")) === null) die("Product not found"); // Получаем номер страницы $page = get_param_nat($_GET, "page", 1);

5.2.0 хувилбараас эхлэн PHP дээр Filter функцүүдийн бүлэг гарч ирэв: filter_var, filter_input, filter_var_array болон бусад хэд хэдэн. Функцууд нь бүхэл тоо, хөвөгч цэгийн тоо, и-мэйл, ip-хаяг, url гэх мэт хувьсагчдыг шалгаж, мөн заасан параметрийн дагуу мөрүүдийг цэвэрлэх боломжтой.

filter_input функцийг ашиглан кодыг дахин бичье.

Функц get_param_nat($type, $name, $default=null) ( $val = filter_input($type, FILTER_VALIDATE_INT, array("min_range" => 1, "max_range" => PHP_INT_MAX)); // filter_input нь шүүж байгаа бол худал буцаана. амжилтгүй, эсвэл хэрэв хувьсагч тодорхойгүй бол null ($val === null || $val === false) буцаана $default ) // Хэрэв (($product = get_param_nat(INPUT_GET)) бүтээгдэхүүний параметрийг шалгана уу; , "бүтээгдэхүүн")) === null) die("Бүтээгдэхүүн олдсонгүй"); // Хуудасны дугаарыг авах $page = get_param_nat(INPUT_GET, "хуудас", 1);

Бага зэрэг туршилтаар get_param_nat функцийн хоёр хувилбарын ажиллах хурд бараг ижил байгааг харуулсан бөгөөд параметр байхгүй тохиолдолд, жишээлбэл, хуудас заагаагүй бол эхний хувилбар нь арай хурдан ажиллах болно.

Тиймээс юуг ашиглахаа өөрөө шийднэ. Би хувьдаа эхний функцийг ашигладаг; энэ нь надад илүү ойр, ойлгомжтой байдаг.

За, төгсгөлд нь уянгын жижиг ухралт. Хайлтын системд зориулж хуудсыг хуулбарлахаас зайлсхийхийн тулд, жишээлбэл, хуудасгүй, хуудас=1 гэж хуудасны толгой хэсэгт каноник url-ийг зааж өгөхийг зөвлөж байна. Энэ нь иймэрхүү харагдах болно:

...