मैं strpos
$needle='appy';
$haystack='I\'m feeling flappy, and you?';
if(strpos($haystack,$needle)!==false){
//then it was found
}
उपयोग करने के लिए आप इसे, मामले की अनदेखी stripos उपयोग करना चाहते हैं करते हैं।
ध्यान दें कि इसके बारे में एक सूक्ष्मता यह है कि अगर सुई घाटी की शुरुआत में है, तो स्थिति 0 में, पूर्णांक 0 वापस कर दिया जाता है। इसका मतलब है कि आपको सख्त तुलना का उपयोग करके false
की तुलना करनी चाहिए, या यह झूठी नकारात्मक उत्पन्न कर सकती है।
के मैनुअल में बताया गया है, इसके बाद के संस्करण
चेतावनी
इस समारोह बूलियन FALSE वापस आ सकते हैं जुड़ा हुआ है, लेकिन यह भी गलत करने के लिए एक गैर बूलियन मान जो मूल्यांकन करता है वापस आ सकते हैं के रूप में, इस तरह के रूप 0 या ""। जानकारी के लिए कृपया बूलियन पर अनुभाग पढ़ें। के लिए = 0= ऑपरेटर का उपयोग इस फ़ंक्शन के वापसी मूल्य का परीक्षण करें।
जहां तक सरणी का उपयोग किया जाता है, स्ट्रॉप्स दो स्ट्रिंग लेने के लिए होता है। सरणी का उपयोग करने से Warning: strpos() expects parameter 1 to be string, array given
या 1 चेतावनी उत्पन्न होगी: स्ट्रॉप्स(): सुई स्ट्रिंग या पूर्णांक नहीं है।
ठीक है, मान लें कि आपके पास तारों की एक सरणी है जिसके लिए खोज करना है।
आप कर सकते हैं
$needles=array('hose','fribb','pancake');
$haystack='Where are those pancakes??';
foreach($needles as $ndl){
if(strpos($haystack,$ndl)!==false){ echo "'$ndl': found<br>\n"; }
else{ echo "'$ndl' : not found<br>\n"; }
}
एक स्ट्रिंग में एक से अधिक तार के लिए खोज, एक सरणी ... यह केवल आपको बतलाता है कि कम से कम एक मैच मिला था का उपयोग किए बिना का एक और तरीका।
$haystack='Where are those pancakes??';
$match=preg_match('#(hose|fribb|pancake)#',$haystack);
//$match is now int(1)
या, preg_match_all का उपयोग यह देखने के लिए करें कि कुल कितने मिलान हैं।
$all_matches=preg_match_all('#(hose|fribb|pancake)#',$haystack,$results);
//all_matches is int(2). Note you also have $results, which stores which needles matched.
उसमें, खोज शब्द एक नियमित अभिव्यक्ति है। ()
एक साथ शब्दों को समूहित करता है, और |
का अर्थ है 'या'। #
पैटर्न की शुरुआत और अंत को दर्शाता है। Regexes जल्दी जटिल हो सकता है, लेकिन निश्चित रूप से, वे काम करते हैं! उन्हें अक्सर प्रदर्शन कारणों से बचा जाता है, लेकिन यदि आप एकाधिक तारों का परीक्षण कर रहे हैं, तो यह ऊपर वर्णित सरणी लूपिंग विधि से अधिक कुशल हो सकता है। मुझे यकीन है कि ऐसा करने के अन्य तरीके भी हैं।
ठीक है, अच्छा downvoted नहीं था। लेकिन क्या होगा यदि यह एक सरणी में था? (संपादित पोस्ट की जांच करें)। – MacMac
क्या आपका मतलब है कि हैस्टैक एक सरणी है? या सुई? पीएचपी डॉक्स की जाँच करें - पहली टिप्पणी वर्तमान में 'strpos कि $ सुई के लिए एक सरणी स्वीकार करता है' है – JAL
अनिवार्य रूप से आप सरणी पर पुनरावृति करने के लिए foreach का उपयोग करना होगा, जो भी एक बात है। अगर आप कई 'सुई' और एक 'भूसे के ढेर' है preg_match एक व्यवहार्य समाधान है। – JAL