tutorial - php भाषा




एक स्ट्रिंग के साथ स्ट्रिंग शुरू होने पर जांच कैसे करें? (4)

आप एक साधारण रेगेक्स का उपयोग कर सकते हैं (उपयोगकर्ता वायरियैथस से अद्यतन संस्करण ईरेगी को बहिष्कृत किया गया है)

if (preg_match('#^http#', $url) === 1) {
    // Starts with http (case sensitive).
}

या यदि आप एक केस असंवेदनशील खोज चाहते हैं

if (preg_match('#^http#i', $url) === 1) {
    // Starts with http (case insensitive).
}

Regexes अधिक जटिल कार्यों को करने की अनुमति देता है

if (preg_match('#^https?://#i', $url) === 1) {
    // Starts with http:// or https:// (case insensitive).
}

निष्पादन के अनुसार, आपको एक नई स्ट्रिंग बनाने की आवश्यकता नहीं है (सबस्ट्र के विपरीत) और न ही पूरी स्ट्रिंग को पार्स करें यदि यह आपके इच्छित चीजों से शुरू नहीं होता है। पहली बार जब आप रेगेक्स का उपयोग करते हैं तो आपको प्रदर्शन दंड मिलेगा (आपको इसे बनाने / संकलित करने की आवश्यकता है)।

यह एक्सटेंशन संकलित नियमित अभिव्यक्तियों (4096 तक) के वैश्विक प्रति-थ्रेड कैश को बनाए रखता है। http://www.php.net/manual/en/intro.pcre.php

इस प्रश्न का उत्तर यहां दिया गया है:

मैं यह जांचने की कोशिश कर रहा हूं कि एक स्ट्रिंग http शुरू होती है या नहीं। मैं यह जांच कैसे कर सकता हूं?

$string1 = 'google.com';
$string2 = 'http://www.google.com';

आप जांच सकते हैं कि आपकी स्ट्रिंग नीचे दिए गए छोटे फ़ंक्शन का उपयोग करके http या https से शुरू होती है या नहीं।

function has_prefix($string, $prefix) {
   return ((substr($string, 0, strlen($prefix)) == $prefix) ? true : false);
}

$url   = 'http://www.google.com';
echo 'the url ' . (has_prefix($url, 'http://')  ? 'does' : 'does not') . ' start with http://';
echo 'the url ' . (has_prefix($url, 'https://') ? 'does' : 'does not') . ' start with https://';

strncmp() फ़ंक्शन और strncasecmp() फ़ंक्शन भी है जो इस स्थिति के लिए बिल्कुल सही है:

if (strncmp($string_n, "http", 4) === 0)

सामान्य रूप में:

if (strncmp($string_n, $prefix, strlen($prefix)) === 0)

strncmp() substr() दृष्टिकोण पर लाभ यह है कि strncmp() केवल एक अस्थायी स्ट्रिंग के बिना, क्या करने की आवश्यकता है करता है।


strpos() प्रयोग करें:

if (strpos($string2, 'http') === 0) {
   // It starts with 'http'
}

तीन बराबर संकेत याद रखें ( === )। यदि आप केवल दो का उपयोग करते हैं तो यह ठीक से काम नहीं करेगा। ऐसा इसलिए है क्योंकि strpos() false वापसी करेगा अगर सुई strpos() नहीं मिल सकती है।





php