Đây không phải là một vấn đề lớn đối với tôi (theo như tôi biết), đó là nhiều hơn một cái gì đó mà tôi quan tâm. Nhưng sự khác biệt chính, nếu có, sử dụng is_numeric
trên preg_match
(hoặc ngược lại) để xác thực giá trị nhập của người dùng.PHP is_numeric hoặc preg_match 0-9 xác nhận
Ví dụ Một:
<?php
$id = $_GET['id'];
if (!preg_match('/^[0-9]*$/', $id)) {
// Error
} else {
// Continue
}
?>
Ví dụ thứ hai:
<?php
$id = $_GET['id'];
if (!is_numeric($id)) {
// Error
} else {
// Continue
}
?>
tôi giả sử cả hai làm giống hệt nhau nhưng có bất kỳ sự khác biệt cụ thể mà có thể gây ra vấn đề sau bằng cách nào đó? Có một "cách tốt nhất" hay cái gì đó tôi không nhìn thấy mà làm cho họ khác nhau.
Vì vậy, với Regex bạn sẽ khắc phục vấn đề của số 0 đứng đầu như thế nào? Điều này có thể gây ra vấn đề cho tôi sau khi tất cả, vì đây là phương pháp tôi đã sử dụng. Nếu tôi chỉ muốn xác nhận rằng đó là một số nguyên (4,8,15,16,23,42,108 vv), không có số 0 đứng đầu, không có dấu thập phân, không âm, thì điều này sẽ đạt được như thế nào? – Joe
@JoeMottershaw - Tôi sẽ chỉnh sửa câu trả lời để thêm thông tin .... – Spudley
Cảm ơn bạn Spudley, đó là một lời giải thích rất rõ ràng - chắc chắn có một sự hiểu biết tốt hơn về sự khác biệt của họ. Có vẻ như tôi sẽ quay lại và điều chỉnh một số mã của tôi! :) – Joe