2012-03-13 17 views
8

मैं कुछ स्ट्रिंग्स देखने के लिए एक स्ट्रिंग का परीक्षण करना चाहता हूं।एकाधिक शब्दों के लिए preg_match

यानी:

$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); 

लेकिन उस विधि केवल एक शब्द से मेल खाता है। मैं एकाधिक शब्दों की जांच कैसे करूं?

+3

preg_match_all() –

+0

कृपया संपादित सवाल – Autolycus

उत्तर

15

कुछ की तरह:

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

देखो क्या होता है # \ रों – Autolycus

+0

@Autolycus मैं एक अंतरिक्ष '\ s' जोड़ने के लिए जा रहा था है शब्दों के चारों ओर, लेकिन फिर मैंने देखा कि आप पहले से ही एक शब्द सीमा '\ b' का उपयोग कर चुके हैं। – jeroen

+0

@Autolycus शुरुआत और अंत में '#' रेगेक्स की शुरुआत और अंत को चिह्नित करता है और आवश्यक है (वह या कोई अन्य चरित्र) ताकि आप अंत में स्विच जोड़ सकें, जैसे असंवेदनशील मिलान के लिए '# i'। – jeroen

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

गुम सीमांकक देखते हैं, और वापस नहीं करता है एक से अधिक मूल्य –

+0

कृपया संपादित सवाल – Autolycus

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

आप "or" में एक regex के रूप में पाइप चरित्र (|) का उपयोग कर सकते हैं।

यदि आपको केवल यह जानने की आवश्यकता है कि कोई भी शब्द मौजूद है, तो ऊपर के रूप में preg_match का उपयोग करें। आप शब्दों में से किसी के सभी आवृत्तियां मैच के लिए की जरूरत है, preg_match_all का उपयोग करें:

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

फिर $matches चर की जाँच करें।

2

http://php.net/manual/en/function.preg-match.php

"() के अगर आप केवल अगर एक स्ट्रिंग एक और स्ट्रिंग में निहित है जाँच करना चाहते हैं का उपयोग न करें। Strpos() या strstr() के बजाय का उपयोग करें के रूप में वे तेजी से हो जाएगा।"

संबंधित मुद्दे