PHP में स्ट्रिंग की शुरुआत और अंत क्यों जांचें?
\n\nकल्पना करें: आप PHP में एक वेबसाइट लिख रहे हैं, और आपको जांचना है कि क्या फ़ाइल का नाम .jpg पर समाप्त होता है? या क्या ईमेल admin से शुरू होता है? पहले इसके लिए substr() या रेगुलर एक्सप्रेशन के साथ जटिल कोड लिखना पड़ता था। लेकिन PHP 8.0 से शुरू करके, हमारे पास एक सुंदर समाधान है — str_starts_with() और str_ends_with() फंक्शन।
यह सिर्फ सिंटैक्टिक शुगर नहीं है। ये स्ट्रिंग के साथ काम करने के तेज़, पढ़ने योग्य और सुरक्षित तरीके हैं, जिन्हें हर PHP डेवलपर को जानना चाहिए। इस लेख में हम वास्तविक उदाहरणों के साथ इनका विश्लेषण करेंगे, पुराने तरीकों से तुलना करेंगे और दिखाएंगे कि सामान्य गलतियों से कैसे बचें।
\n\nstr_starts_with और str_ends_with क्या हैं?
\n\nदोनों फंक्शन PHP 8.0 (नवंबर 2020 में जारी) में आए थे। ये एक सरल कार्य को हल करते हैं: जांचना कि क्या स्ट्रिंग में दिया गया प्रीफिक्स (शुरुआत) या सफिक्स (अंत) है।
\n\nफंक्शन का सिग्नेचर
\n\nstr_starts_with(string $haystack, string $needle): bool\nstr_ends_with(string $haystack, string $needle): bool\n\n- \n
$haystack— वह स्ट्रिंग जिसमें हम खोजते हैं (घास का ढेर)। \n $needle— वह उप-स्ट्रिंग जिसे हम खोजते हैं (सुई)। \n - ये
trueयाfalseलौटाते हैं। \n
सबसे सरल उदाहरण
\n\necho str_starts_with('Hello, world!', 'Hello'); // true\necho str_ends_with('Hello, world!', 'world!'); // true\necho str_starts_with('Hello, world!', 'world'); // false\n\nमहत्वपूर्ण: ये फंक्शन केस-सेंसिटिव हैं। str_starts_with('PHP', 'php') false लौटाएगा। यदि आपको केस-इनसेंसिटिव तुलना चाहिए, तो दोनों स्ट्रिंग के लिए strtolower() या strtoupper() का उपयोग करें।
उपयोग के वास्तविक उदाहरण
\n\n1. फ़ाइल एक्सटेंशन की जांच
\n\n$filename = 'report_2024.pdf';\n\nif (str_ends_with($filename, '.pdf')) {\n echo "यह PDF दस्तावेज़ है";\n} elseif (str_ends_with($filename, '.jpg')) {\n echo "यह एक छवि है";\n} else {\n echo "अज्ञात प्रारूप";\n}\n\nपहले यह substr($filename, -4) के माध्यम से किया जाता था — सफिक्स की लंबाई में गलती करना आसान था। अब कोड सामान्य अंग्रेजी की तरह पढ़ा जाता है: "स्ट्रिंग इस पर समाप्त होती है"।
2. URL या ईमेल का सत्यापन
\n\n$email = 'user@gmail.com';\n$url = 'https://pythonlib.ru';\n\nif (str_ends_with($email, '@gmail.com')) {\n echo "Gmail उपयोगकर्ता";\n}\n\nif (str_starts_with($url, 'https://')) {\n echo "सुरक्षित कनेक्शन";\n}\n\n3. स्ट्रिंग्स की सरणी को फ़िल्टर करना
\n\n$files = ['image.jpg', 'document.pdf', 'photo.png', 'notes.txt'];\n\n$images = array_filter($files, function($file) {\n return str_ends_with($file, '.jpg') || str_ends_with($file, '.png');\n});\n\nprint_r($images); // ['image.jpg', 'photo.png']\n\nपहले यह कैसे काम करता था (और नए फंक्शन क्यों बेहतर हैं)
\n\nPHP 8.0 से पहले, डेवलपर्स कई तरीकों का उपयोग करते थे। आइए उनकी तुलना नए फंक्शन से करें।
\n\nतरीका 1: substr()
\n\n// पुराना तरीका: शुरुआत की जांच\nif (substr($string, 0, strlen('prefix')) === 'prefix') { ... }\n\n// नया तरीका\nif (str_starts_with($string, 'prefix')) { ... }\n\nपुराने तरीके के नुकसान:
\n- \n
- अधिक शब्द: उप-स्ट्रिंग की लंबाई की गणना करनी पड़ती है। \n
- नकारात्मक लंबाई पर त्रुटि का जोखिम (यदि
$needle,$haystackसे लंबा है)। \n - कोड कम पढ़ने योग्य है। \n
तरीका 2: strpos()
\n\n// पुराना तरीका: शुरुआत की जांच\nif (strpos($string, 'prefix') === 0) { ... }\n\n// नया तरीका\nif (str_starts_with($string, 'prefix')) { ... }\n\nstrpos के साथ तार्किक गलती करना आसान है: यदि === 0 नहीं लगाया, बल्कि सिर्फ == false या == 0
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें