Preg_match कोई फर्क नहीं पड़ता कि - php

मैं अपने एक चर के साथ दूसरे के साथ मिलान करने की कोशिश कर रहा हूं। मैं चाहता हूं कि वैरिएबल चलो कहें $word इसमें कोई फर्क नहीं पड़ता कि इसमें दूसरे चर के साथ क्या मेल खाता है, कहता है $search_in और तदनुसार परिणाम गूंजें।

मैं उपयोग कर रहा हूँ if (preg_match("/$word/i", $search_in)) echo "matches"; लेकिन मुझे निम्नलिखित की तरह कई चेतावनियां मिल रही हैं क्योंकि मैंने डीबी से वापस आने वाले मूल्यों पर regexp लागू किया है।

चेतावनी: preg_match () [function.preg-match]: अज्ञात संशोधक "("

चेतावनी: preg_match () [function.preg-match]: अज्ञात संशोधक "टी"

उत्तर:

जवाब के लिए 2 № 1

$word सबसे अधिक संभावना इसमें एक स्लैश शामिल है।

आपको उपयोग करना चाहिए stripos इसके लिए, क्योंकि आपको नियमित अभिव्यक्तियों की शक्ति की आवश्यकता नहीं है:

if (stripos($search_in, $word) !== false) echo "matches";

रिकॉर्ड के लिए, preg_match ऐसा करने का तरीका होगा:

if (preg_match("/".preg_quote($word, "/")."/i", $search_in)) echo "matches";

जब पूर्व नौकरी कर सकते हैं तो हमेशा नियमित अभिव्यक्तियों के लिए स्ट्रिंग फ़ंक्शंस को प्राथमिकता दें।


जवाब के लिए 3 № 2

अगर आपको सिर्फ यह जांचने की ज़रूरत है कि क्या $word में मौजूद है $search_in, आप उपयोग कर सकते हैं:

if(stripos($search_in, $word) !== FALSE) echo "matches";

के रूप में PHP मैनुअल कहते हैं:

Preg_match () का प्रयोग न करें अगर आप केवल यह जांचना चाहते हैं कि एक स्ट्रिंग किसी अन्य स्ट्रिंग में निहित है या नहीं। इसके बजाय strpos () या strstr () का उपयोग करें क्योंकि वे तेज़ होंगे।


संबंधित सवाल
सबसे लोकप्रिय