Php suriin kung ito ay isang numero. Pagsusuri ng regular na expression para sa isang numero. Sinusuri kung ang isang variable ay isang integer sa JavaScript

Sa kasalukuyan, ang aktibong gawain ay isinasagawa sa site upang maglunsad ng bagong seksyon. At kapag nagsusulat ng ilang mga script para dito, naging kinakailangan upang suriin ang mga variable para sa mga numero. At hindi lamang isang numero (pagkatapos ng lahat, ang 1.5 ay isang numero din), ngunit isang buong numero. At ito ay kung paano ko ginawa ang pagsusuring ito.

Sinusuri kung ang isang variable ay isang integer sa PHP

Upang suriin sa PHP kung ang isang numero ay isang integer, gumagamit kami ng isang regular na expression:

Alinsunod dito, kung ang variable ay isang integer, ginagawa namin ang aksyon na kailangan namin at vice versa.

Sinusuri kung ang isang variable ay isang integer sa JavaScript

Sa JavaScript, ang mga bagay ay medyo naiiba, at dito kailangan nating isulat ang sarili nating maliit na function:

Function number_scan(num) ( return (num ^ 0) === num; )

at gamitin ito para sa pagsubok:

function number_scan(num) ( return (num ^ 0) === num; ) var number = "1.3"; if(number_scan(number)) ( // Action kung ang numero ay isang integer) else ( // Action kung fractional ang numero o hindi numero ang variable)

Dito rin, kung ang isang variable ay katumbas ng isang integer, ang aksyon na gusto mo ay isasagawa at vice versa.

Halimbawa, kunin ang address na ito: http://example.com/price.php?product=859844&page=99.

Ang script ay nagpapakita ng isang listahan ng mga presyo sa mga tindahan para sa produkto ng produkto ang opsyonal na parameter ng pahina ay tumutukoy sa numero ng pahina. Kung hindi tinukoy ang pahina at ang url ay mukhang http://example.com/price.php?product=859844 , ipapakita namin ang unang pahina.

Bago ang PHP 5.2.0, maaaring malutas ang problema sa simpleng paraan na ito.

// Function para sa pagkuha ng parameter na natural na numero // $arr = array of parameters ($GET or $POST), $name = name ng parameter, // Ibinabalik ng function ang value ng parameter, o $default kung ang parameter ay nawawala o hindi tamang function get_param_nat($ arr, $name, $default=null) ( kung (!isset($arr[$name])) ibalik ang $default; // Suriin sa napakasimpleng paraan, i-convert ang parameter sa isang numero, pagkatapos ay bumalik sa isang string // Kung maayos ang lahat, ang resultang string ay dapat tumugma sa orihinal na halaga ng parameter na $val = $arr[$name]; Sinusuri namin na ang numerong mayroon kami ay mas malaki sa zero kung (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);

Simula sa bersyon 5.2.0, lumitaw ang isang pangkat ng mga function ng Filter sa PHP: filter_var, filter_input, filter_var_array at marami pang iba. Maaaring suriin ng mga function ang mga variable para sa mga integer, floating point na numero, e-mail, ip-address, url, atbp., at i-clear din ang mga string ayon sa mga tinukoy na parameter.

Isulat muli natin ang code gamit ang filter_input function.

Function 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 returns false kung nag-filter nabigo, o null kung ang variable ay hindi natukoy kung ($val === null || $val === false) ibalik ang $default; , "product")) === null) die("Product not found"); // Kunin ang page number $page = get_param_nat(INPUT_GET, "page", 1);

Ang isang maliit na pagsubok ay nagpakita na ang bilis ng pagpapatakbo ng dalawang variant ng get_param_nat function ay halos pareho, at sa kawalan ng isang parameter, halimbawa, ang pahina ay hindi tinukoy, ang unang variant ay gagana kahit na medyo mas mabilis.

Kaya ikaw ang bahalang magdesisyon kung ano ang gagamitin. Personal kong ginagamit ang unang function; ito ay kahit papaano ay mas malapit at mas malinaw sa akin.

Well, isang maliit na lyrical digression sa dulo. Upang maiwasan ang pagdoble ng pahina para sa mga search engine, halimbawa, walang pahina at may page=1, inirerekomenda kong tukuyin ang canonical url sa head section ng page. Magiging ganito ang hitsura nito:

...