2009-06-02 39 views
44

Tôi muốn biết ý nghĩa của toán tử dấu ngã trong cụm từ thông dụng là gì.Toán tử dấu ngã trong Cụm từ thông dụng

Tôi có tuyên bố này:

if (!preg_match('~^\d{10}$~', $_POST['isbn'])) { 
    $warnings[] = 'ISBN should be 10 digits'; 
} 

tôi tìm thấy tài liệu này giải thích những gì dấu ngã có nghĩa là: ~

Nó nói rằng =~ là một nhà điều hành perl đó có nghĩa là chạy biến này đối với biểu thức chính quy này.

Nhưng tại sao cụm từ thông dụng của tôi chứa hai toán tử dấu ngã?

Trả lời

52

Trong trường hợp này, nó chỉ được sử dụng làm dấu phân cách.

Nói chung, trong PHP, ký tự đầu tiên và cuối cùng của cụm từ thông dụng là "dấu phân cách" để đánh dấu vị trí bắt đầu và kết thúc của phần phù hợp (trong trường hợp bạn muốn thêm công cụ sửa đổi ở cuối, chẳng hạn như không xác định, v.v ...)

Nói chung PHP làm việc này từ ký tự đầu tiên trong chuỗi có nghĩa là cụm từ thông dụng, khớp với lần xuất hiện thứ hai của nó làm dấu phân cách thứ hai. Điều này rất hữu ích khi bạn có một sự xuất hiện của dấu phân cách thông thường trong văn bản (ví dụ, sự xuất hiện của / trong văn bản) - điều này có nghĩa là bạn không phải làm những điều khó xử.

Matching cho "//" với dấu phân cách thiết lập để "/"

/\/\//

Matching cho "//" với dấu phân cách của "#"

#//#

+1

ic, tôi đã quen với/delimiter vì vậy tôi hơi bối rối với dấu phân tách ~. Cảm ơn bạn đã làm rõ. –

+0

Điều này chỉ áp dụng cho PCRE http://docs.php.net/manual/en/book.pcre.php chứ không phải POSIX ERE http://docs.php.net/manual/en/book.regex.php – Gumbo

6

Trong trường hợp này, nó không có nghĩa gì cả. Nó chỉ đơn giản là delimiting bắt đầu và kết thúc của mô hình của bạn. Trong PCRE (Perl Regular Expressions Tương thích), đó là những gì bạn đang sử dụng với preg_ * trong PHP, mô hình là đầu vào cùng bên các tùy chọn ngôn luận, như vậy:

preg_match("/pattern/opt", ...); 

Tuy nhiên, việc sử dụng "/" như dấu phân cách trong trường hợp này là tùy ý - mặc dù dấu gạch chéo là phổ biến, nó có thể được thay thế bằng bất cứ thứ gì. Trong trường hợp của bạn, đó là dấu ngã.

+0

Oh, Ok .. Tôi có biểu hiện chính quy từ cuốn sách .. Họ không giải thích ý nghĩa của nó. Vì vậy, đã nhầm lẫn một chút. Tôi chỉ đang cố làm sáng tỏ mọi thứ vì tôi bối rối. Cảm ơn! –

+0

'/' rất phổ biến vì đó là dấu phân cách chuẩn cho các cụm từ thông dụng perl, đó là những gì đại diện cho;) –

Các vấn đề liên quan