PHP str_starts_with और str_ends_with: शुरुआती लोगों के लिए विश्लेषण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में स्ट्रिंग की शुरुआत और अंत क्यों जांचें?

\n\n

कल्पना करें: आप PHP में एक वेबसाइट लिख रहे हैं, और आपको जांचना है कि क्या फ़ाइल का नाम .jpg पर समाप्त होता है? या क्या ईमेल admin से शुरू होता है? पहले इसके लिए substr() या रेगुलर एक्सप्रेशन के साथ जटिल कोड लिखना पड़ता था। लेकिन PHP 8.0 से शुरू करके, हमारे पास एक सुंदर समाधान है — str_starts_with() और str_ends_with() फंक्शन।

\n\n

यह सिर्फ सिंटैक्टिक शुगर नहीं है। ये स्ट्रिंग के साथ काम करने के तेज़, पढ़ने योग्य और सुरक्षित तरीके हैं, जिन्हें हर PHP डेवलपर को जानना चाहिए। इस लेख में हम वास्तविक उदाहरणों के साथ इनका विश्लेषण करेंगे, पुराने तरीकों से तुलना करेंगे और दिखाएंगे कि सामान्य गलतियों से कैसे बचें।

\n\n

str_starts_with और str_ends_with क्या हैं?

\n\n

दोनों फंक्शन PHP 8.0 (नवंबर 2020 में जारी) में आए थे। ये एक सरल कार्य को हल करते हैं: जांचना कि क्या स्ट्रिंग में दिया गया प्रीफिक्स (शुरुआत) या सफिक्स (अंत) है।

\n\n

फंक्शन का सिग्नेचर

\n\n
str_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\n

सबसे सरल उदाहरण

\n\n
echo 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\n

उपयोग के वास्तविक उदाहरण

\n\n

1. फ़ाइल एक्सटेंशन की जांच

\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) के माध्यम से किया जाता था — सफिक्स की लंबाई में गलती करना आसान था। अब कोड सामान्य अंग्रेजी की तरह पढ़ा जाता है: "स्ट्रिंग इस पर समाप्त होती है"।

\n\n

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\n

3. स्ट्रिंग्स की सरणी को फ़िल्टर करना

\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\n

PHP 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
\n\n

तरीका 2: strpos()

\n\n
// पुराना तरीका: शुरुआत की जांच\nif (strpos($string, 'prefix') === 0) { ... }\n\n// नया तरीका\nif (str_starts_with($string, 'prefix')) { ... }
\n\n

strpos के साथ तार्किक गलती करना आसान है: यदि === 0 नहीं लगाया, बल्कि सिर्फ == false या == 0

ब्लॉग

पुस्तक अनुशंसाएँ