2011-08-04 34 views
5

में सबस्ट्रिंग मौजूद है या नहीं, मेरे पास बहुत सारे स्ट्रिंग हैं, और मुझे यह जांचने की आवश्यकता है कि उनमें से प्रत्येक में रंग है या नहीं।पता लगाएं कि स्ट्रिंग

उदाहरण के लिए:

  • आकाश में एक पक्षी फ्रांस के
  • 22 सड़क
  • कुत्ता नीला है
  • बिल्ली काले और सफेद है

तो, दो अंतिम तारों को सच होना चाहिए।

सबसे अच्छा तरीका यह पता लगाने के लिए क्या है?

Regex, या किसी भी substr के साथ जांच()?

उत्तर

8

regexp में आप

preg_match_all("/(red|blue|black|white|etc)/", $haystack, $matches); 

print_r($matches); 

सभी स्ट्रिंग्स के लिए एक पाश का उपयोग करें लिख सकते हैं, और आप आसानी से जो मूल्यों की ओर से $ आप की जरूरत से मेल खाता है पर ध्यान देंगे।

1

strpos या php में strripos एक स्ट्रिंग में एक भी शब्द के लिए खोज करने के लिए सक्षम होना चाहिए।

+0

भी कहीं के बारे में eregi eregi एक उदाहरण देखा ("(यह | कि)", $ str) // $ str – Tommy

23

मैं हमेशा strpos के साथ काम करता हूं क्योंकि यह सबसे तेज़ विकल्प है (हालांकि regex के बारे में पता नहीं है) के साथ आपको सभी रंगों को खोजने के लिए लूप करना पड़ सकता है।

if(strpos($haystack, $needle) !== FALSE) return $haystack; 
+0

मैं एक समारोह जो उपयोग strpos लगता है है में इस या उस पाता है, $ सुइयों की एक सरणी के साथ – bahamut100

+3

strpos सही वापस नहीं करता है, लेकिन यह गलत वापसी करता है तो आप क्या कर सकते हैं 'अगर (strpos ($ भूसे के ढेर, $ सुई) == गलत!) वापसी $ भूसे के ढेर,' और यदि आप 'लाल देख रहे थे याद करने के लिए एक और बात है 'तो' fred' भी परिणाम लौटाएगा। – pathfinder

+0

@ पैथफाइंडर आप बिल्कुल सही हैं, ऐसा लगता है जैसे मैं ध्यान नहीं दे रहा था :) इसे इंगित करने के लिए धन्यवाद। – Quasdunk

3

अगर आप strpos का उपयोग करेगा तो यह एक तार का एक स्थिति देता है यह एक नंबर 1,2,3 आदि सही या गलत नहीं वापस आ जाएगी।

और दूसरी समस्या है, तो स्ट्रिंग शुरू में मौजूद यह 0 जो के रूप में झूठी विचार करेंगे तो strpos कि शब्द नहीं मिल सकता है वापस आ जाएगी है।

+2

बस === ऑपरेटर का उपयोग करें – rluks

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