कई वर्षों से वेब डेवलपर्स के बीच PHP भाषा का सक्रिय रूप से उपयोग किया जा रहा है। हर सॉफ़्टवेयर भाषा की तरह, PHP में सर्वोत्तम प्रथाएँ और अल्पज्ञात त्रुटियाँ/दुरूपयोग हैं। इस पाठ में PHP strpos() हम इसके फ़ंक्शन का सर्वोत्तम तरीके से उपयोग कैसे करें और कम ज्ञात जानकारी के बारे में बात करेंगे।
सत्य से तुलना न करें
PHP भाषा में strpos() फ़ंक्शन खोजे गए टेक्स्ट की प्रारंभिक स्थिति लौटाता है। strpos() जब हम टेक्स्ट में लक्ष्य मिला है या नहीं, यह खोजते समय फ़ंक्शन का उपयोग करते हैं, लक्ष्य कब मिलता है 1, जब नहीं मिला 0 कोड लौटाता है. यदि लक्ष्य खोजे गए पाठ की शुरुआत में ही मिल गया था, 0 रिटर्न. यह वास्तव में PHP में एक बग नहीं है, लेकिन इसके परिणामस्वरूप, जब नीचे दिए गए उदाहरण के रूप में लिखी गई क्वेरी में लक्ष्य पाठ की उपस्थिति की खोज की जाती है, तो लक्ष्य पाठ शुरुआत में होता है। 0 यह सॉफ़्टवेयर में त्रुटि उत्पन्न करेगा क्योंकि यह वापस आ जाएगा।
उदाहरण:
$data = "Onur Özden Web Çözümleri";
$search = "Onur";
if (strpos($data, $search) === true) {
echo "Metinde '{$search}' ifadesi geçiyor";
} else { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçmiyorउदाहरण में, अन्य ब्लॉक ने काम किया। यह गलत है! क्योंकि उदाहरण में हमने जिस पाठ का उपयोग किया है, उसमें "Onur" नाम का उल्लेख है। ऐसा इसलिए है क्योंकि strpos() फ़ंक्शन में, यदि खोजा गया टेक्स्ट डेटा की शुरुआत में है, तो फ़ंक्शन को "कहा जाता है"0 उत्तर लौटाना है. तो हम इस समस्या से कैसे निपटें? क्या हमें किसी भिन्न फ़ंक्शन का उपयोग करने की आवश्यकता है? नहीं, इसकी कोई जरूरत नहीं है. इस समस्या का एक बहुत ही सरल समाधान है. आइए उदाहरण की जांच करें और इसका विवरण दें।
$data = "Onur Özden Web Çözümleri";
$search = "Onur";
if (strpos($data, $search) !== false) { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçiyor";
} else {
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçiyorइस उदाहरण में, if ब्लॉक में तुलना सही ढंग से काम करती है। इसका कारण यह है कि सभी लोकप्रिय प्रोग्रामिंग भाषाएं, जिनमें PHP और यहां तक कि सॉफ़्टवेयर लॉजिक भी शामिल हैं 0 मूल्य false, 1 मूल्य true के रूप में माना जाता है. चूँकि रिटर्न मान 0 है, जब if ब्लॉक में बूलियन प्रकार की तुलना की जाती है, तो मान 0 को गलत के रूप में संसाधित किया जाता है और यह त्रुटि उत्पन्न होती है।
असत्य से तुलना करते समय सख्त तुलना का प्रयोग करें
एक और बहुत महत्वपूर्ण विवरण है जिस पर हमें पिछले उदाहरण में ध्यान देने की आवश्यकता है। यदि हम सख्त तुलना के बजाय समानता तुलना (ढीली तुलना) करते हैं, तो हमें फिर से उसी त्रुटि का सामना करना पड़ेगा। क्योंकि समानता तुलना डेटा के प्रकार पर सवाल नहीं उठाती है, समतुल्य तुलना भी डेटा के प्रकार पर सवाल उठाती है। आइए हम जिस बारे में बात कर रहे हैं उसका एक गलत उदाहरण देखें। आइए तुल्यता तुलना के बिना एक उदाहरण लें और परिणाम देखें
$data = "Onur Özden Web Çözümleri";
$search = "Onur";
if (strpos($data, $search) != false) {
echo "Metinde '{$search}' ifadesi geçiyor";
} else { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçmiyorहम मामले की संवेदनशीलता को प्रबंधित कर सकते हैं
स्ट्रॉप्स() फ़ंक्शन डिफ़ॉल्ट रूप से केस संवेदनशील है। यदि हम इस संवेदनशीलता को दूर करना चाहते हैं, तो हमें स्ट्रिपोस() फ़ंक्शन का उपयोग करना होगा। आइए स्ट्रिपोस() फ़ंक्शन का एक उदाहरण देखें:
$data = "Onur Özden Web Çözümleri";
$search = "onur";
if (stripos($data, $search) !== false) { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçiyor";
} else {
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçiyorहम strpos() फ़ंक्शन के साथ जांच सकते हैं कि खोजा गया टेक्स्ट एक से अधिक बार आता है या नहीं
पहला उदाहरण:
हम strpos() फ़ंक्शन के साथ जांच सकते हैं कि डेटा में लक्ष्य टेक्स्ट कितनी बार दिखाई देता है। पहले उदाहरण में, हम इसे करने का रचनात्मक लेकिन सरल और बुनियादी तरीका दिखाएंगे, और दूसरे उदाहरण में, हम सबसे अच्छा तरीका दिखाएंगे, जो कहीं अधिक व्यावहारिक है।
$data = "Onur Özden Web Çözümleri, Onur Özden tarafından kurulmuştur. Onur Özden ve ekibi ile web yazılım geliştirme, wordpress teknik destek ve seo hizmetleri sunar.";
$search = "Onur";
// undefined hatası almamak için değişkenleri tanımla ve varsayılan olarak 0 değerini ver;
$position = 0;
$count = 0;
while (($position = strpos($data, $search, $position)) !== false) {
$count++; // Kaçıncı kez geçtiğini say
$position++; // Sonraki arama için pozisyonu artır
}
// Sonucu yazdır
echo "Veri içerisinde toplam {$count} adet '{$search}' kelimesi geçiyor<br>";
// Çıktı: Veri içerisinde toplam 3 adet 'Onur' kelimesi geçiyorदूसरा उदाहरण:
$data = "Onur Özden Web Çözümleri, Onur Özden tarafından kurulmuştur. Onur Özden ve ekibi ile web yazılım geliştirme, wordpress teknik destek ve seo hizmetleri sunar.";
$search = "Onur";
// substr_count fonksiyonu ile $search ifadesinin $data içindeki toplam sayısını hesapla
$count = substr_count($data, $search);
// veri içerisinde hedef kelime geçmiyorsa "0 adet geçiyor" gibi anlamsız bir ifade çıktılanmaması için koşul
if ($count > 0) { // veride hedef ifade geçtiği için bu blok çalışacak
echo "Veri içerisinde toplam {$count} adet '{$search}' kelimesi geçiyor";
} else {
echo "Veri içerisinde '{$search}' kelimesi geçmiyor.";
}
// Çıktı: Veri içerisinde toplam 3 adet 'Onur' kelimesi geçiyorsubstr_count() संक्षेप में, फ़ंक्शन गणना करता है कि लक्ष्य में कितने उपपाठ पारित किए गए हैं और कितनी बार। आप इस फ़ंक्शन के विस्तृत दस्तावेज़ और उदाहरण यहां पा सकते हैं -> https://www.php.net/manual/function.substr-count.php
स्ट्रॉप्स के बारे में()
इस लेख में strpos() हमने सीखा कि इसके कार्य का सर्वोत्तम तरीके से उपयोग कैसे करें और सबसे आम दुरुपयोग को कैसे सुधारें। strpos() इसके कार्य के साथ stripos() और substr_count() हमने उनके कार्यों को भी जाना। सर्वोत्तम गुणवत्ता वाले कोडिंग दृष्टिकोणों पर हमारी शेष श्रृंखला के लिए बने रहें।



