Trong PHP có vẻ như:
function check_condition($str) {
return preg_match(SOME_REGEX, $str);
}
Đáng tiếc là không có hành regex trận đấu trong PHP không giống như một số ngôn ngữ khác. Bạn sẽ phải gọi một hàm. Thực hiện theo hướng dẫn của preg_match()
và trang hướng dẫn về cái gọi là perl compatible regular expresssions (preg) nói chung.
Điều gì đó bổ sung. Sau khi đọc trang hướng dẫn sử dụng preg_match, bạn biết rằng phương thức trả về một số nguyên, số lượng các kết quả phù hợp được tìm thấy. Khi phương thức trả về sau trận đấu đầu tiên, điều này chỉ có thể là 0
hoặc 1
. Tính đến hệ thống đánh máy lỏng lẻo của PHP này sẽ là tốt để sử dụng nó trong sự so sánh lỏng lẻo như:
if(check_condition($str)) { ....
if(check_condition($str) == true) { ...
Nhưng nó sẽ không làm việc trong một so sánh nghiêm ngặt:
if(check_condition($str) === true) { ...
Do đó nó sẽ là một tốt ý tưởng để đúc các giá trị trở lại của preg_match:
function check_condition($str) {
return (boolean) preg_match(SOME_REGEX, $str);
}
cập nhật
Tôi đã suy nghĩ một chút về đề xuất cuối cùng của mình và tôi thấy có vấn đề với điều này. preg_match()
sẽ trả về một số nguyên nếu tất cả đều hoạt động tốt nhưng boolean FALSE
nếu xảy ra lỗi. Ví dụ vì lỗi cú pháp trong mẫu regex. Do đó bạn sẽ không nhận biết được lỗi nếu bạn chỉ đang truyền tới boolean
. Tôi sẽ sử dụng exceptions
để chứng minh rằng một lỗi đã xảy ra:
function check_condition($str) {
$ret = preg_match(SOME_REGEX, $str);
if($ret === FALSE) {
$error = error_get_last();
throw new Exception($error['message']);
}
return (boolean) $ret;
}
['preg_match()'] (http://php.net/preg-match)? – BlitZ
preg_match ($ regex, $ string); – Robert
@CORRUPT không phải là toán tử NOT bitwise **? ** –