Trong JS tôi đã sử dụng mã này:Cách kiểm tra, nếu chuỗi php chỉ chứa chữ cái và chữ số tiếng Anh?
if(string.match(/[^A-Za-z0-9]+/))
nhưng tôi không biết, làm thế nào để làm điều đó trong PHP.
Trong JS tôi đã sử dụng mã này:Cách kiểm tra, nếu chuỗi php chỉ chứa chữ cái và chữ số tiếng Anh?
if(string.match(/[^A-Za-z0-9]+/))
nhưng tôi không biết, làm thế nào để làm điều đó trong PHP.
Sử dụng preg_match().
if (!preg_match('/[^A-Za-z0-9]/', $string)) // '/[^a-z\d]/i' should also work.
{
// string contains only english letters & digits
}
Bạn có thể sử dụng chức năng preg_match() chẳng hạn.
if (preg_match('/[^A-Za-z0-9]+/', $str))
{
// ok...
}
if(preg_match('/[^A-Za-z0-9]+/', $str)) {
// ...
}
Có một cái nhìn tại shortcut này
if(!preg_match('/[^\W_ ] /',$string)) {
}
các class [^\W_]
trận bất kỳ lá thư hoặc chữ số nhưng không nhấn mạnh. Và lưu ý biểu tượng !
. Nó sẽ giúp bạn tiết kiệm từ quét toàn bộ đầu vào của người dùng.
if(ctype_alnum($string)) {
echo "String contains only letters and numbers.";
}
else {
echo "String doesn't contain only letters and numbers.";
}
Không chắc chắn tại sao mọi người không bỏ phiếu chức năng ctype. Tôi không thể hình ảnh có một vấn đề hiệu suất với phạm vi của các chức năng ctype. –
ctype_alnum là ngôn ngữ phụ thuộc để nó có thể không hoạt động như bạn muốn! – thethakuri
nếu bạn cần kiểm tra xem đó có phải là tiếng Anh hay không. bạn có thể sử dụng chức năng dưới đây. có thể giúp đỡ một ai đó ..
function is_english($str)
{
if (strlen($str) != strlen(utf8_decode($str))) {
return false;
} else {
return true;
}
}
PHP có thể so sánh một chuỗi với một biểu thức chính quy dùng preg_match(regex, string)
như thế này:
if (!preg_match('/[^A-Za-z0-9]+/', $string)) {
// $string contains only English letters and digits
}
vâng. nó trông hiệu quả hơn. Để tìm ký tự đầu tiên không có trong phạm vi có vẻ hợp lý hơn quét toàn bộ chuỗi. –
N. Tiếng Anh verison của liên kết ở trên đây: http://php.net/manual/en/function.preg-match.php –
Ok, tôi đã cập nhật liên kết đến phiên bản tiếng anh. –