2012-03-13 23 views
8

Tôi muốn thử nghiệm một chuỗi để xem nó chứa các từ nhất định.preg_match cho nhiều từ

tức là:

$string = "The rain in spain is certain as the dry on the plain is over and it is not clear"; 
preg_match('`\brain\b`',$string); 

Nhưng phương pháp đó chỉ phù hợp với một từ. Làm cách nào để kiểm tra nhiều từ?

+3

preg_match_all() –

+0

xin vui lòng xem câu hỏi đã chỉnh sửa – Autolycus

Trả lời

15

Cái gì như:

preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches); 
+0

gì # \ s không – Autolycus

+0

@Autolycus tôi sẽ thêm một không gian '\ s' xung quanh các từ, nhưng sau đó tôi nhận thấy bạn đã sử dụng một ranh giới từ '\ b'. – jeroen

+0

@Autolycus Các '#' ở đầu và cuối đánh dấu sự bắt đầu và kết thúc của regex và là cần thiết (đó hoặc bất kỳ nhân vật nào khác) để bạn có thể thêm công tắc ở cuối, như '# i' cho trường hợp không khớp. – jeroen

2
preg_match('\brain\b',$string, $matches); 
var_dump($matches); 
+0

delimiters Thiếu, và không trả lại nhiều hơn một giá trị –

+0

xin vui lòng xem đã chỉnh sửa câu hỏi – Autolycus

3
preg_match('~\b(rain|dry|certain|clear)\b~i',$string); 

Bạn có thể sử dụng các ký tự gạch (|) như là một "hoặc" trong một regex.

Nếu bạn chỉ cần biết nếu có bất kỳ từ nào có mặt, hãy sử dụng preg_match như trên. Nếu bạn cần phải phù hợp tất cả các lần xuất hiện của bất cứ từ nào, sử dụng preg_match_all:

preg_match_all('~\b(rain|dry|certain|clear)\b~i', $string, $matches); 

Sau đó kiểm tra biến $matches.

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