2011-12-21 3 views
7

नहीं डालने पर मैं कस्टम फ़ील्ड आउटपुट के साथ एक WordPress थीम संपादित कर रहा हूं। मैंने सफलतापूर्वक सभी संपादन किए हैं और सबकुछ काम करता है जैसा कि करना चाहिए। मेरी समस्या यह है कि यदि एक यूआरएल कस्टम फ़ील्ड में सबमिट किया गया है, तो इको बिल्कुल वही था जो वहां था, इसलिए अगर कोई www.somesite.com में प्रवेश करता है तो गूंज सिर्फ यही है और इसे डोमेन के अंत में जोड़ती है: www। mysite.com www.somesite.com। मैं अगर आपूर्ति की लिंक, शुरुआत में http:// उपसर्ग अगर यह तो है bothing को देखने के लिए जाँच करना चाहते हैं, लेकिन अगर यूआरएल से पहले http:// बाहर गूंज नहीं।जांच कर रहा है कि क्या यूआरएल में शुरुआत में http: // है और

मुझे उम्मीद है कि मैंने अपनी समस्या को उतना अच्छा समझाया है जितना मैं कर सकता हूं।

$custom = get_post_meta($post->ID, 'custom_field', true); 

<?php if (get_post_meta($post->ID, 'custom_field', true)) : ?> 
    <a href="<?php echo $custom ?>"> <img src="<?php echo bloginfo('template_url');?>/lib/images/social/image.png"/></a> 
    <?php endif; ?> 
+1

ठीक है, आपको लगता है कि कक्षाओं और टेम्पलेट्स का उपयोग कैसे करें। आपको 'substr' के साथ इसे समझने में सक्षम होना चाहिए, भले ही आप यह नहीं समझ सकें कि 'RegEx',' strncmp', या कई अन्य तरीकों से इसे कैसे किया जाए .... – Dutchie432

+0

http: // stackoverflow .com/प्रश्न/4487794/चेक-if-string-include-http –

उत्तर

53

parse_url() मदद कर सकते हैं ...

$parsed = parse_url($urlStr); 
if (empty($parsed['scheme'])) { 
    $urlStr = 'http://' . ltrim($urlStr, '/'); 
} 
+0

lol उत्तर के लिए धन्यवाद, लेकिन क्या कोई संभवतः मुझे मेरे उदाहरण में प्रदर्शित आवश्यक कोड का एक उदाहरण दिखा सकता है? मैं कुल php noob हूं और धीरे-धीरे परिचित हो रहा हूं लेकिन अभी भी अंतहीन गति humps मारा। –

+0

http://stackoverflow.com/a/8591679/1110064 यह पता चल और यह काम करता है, मैं सिर्फ 'sceme' भाग समझ में नहीं है। यह लॉल क्या है –

+3

क्या आप शायद यह देखने के लिए Google 'parse_url' google? parse_url कुंजी/मूल्य वस्तुओं की एक सरणी देता है। "रिटर्न वैल्यूज" देखें http://php.net/manual/en/function.parse-url.php – Dutchie432

1
echo (strncasecmp('http://', $url, 7) && strncasecmp('https://', $url, 8) ? 'http://' : '') . $url; 

याद रखें, कि strncmp() रिटर्न 0, जब पहली n पत्र के बराबर हैं, जो false यहाँ करने के लिए मूल्यांकन करता है। यह थोड़ा उलझन में हो सकता है।

+0

स्ट्रिंग फ़ंक्शंस का उपयोग करना केस से निपटने के लिए आवश्यक से कठिन बनाता है और 'https: //' – DaveRandom

+1

मेरा संपादन देखें। आप मान सकते हैं कि यह केवल दो योजनाएं होगी, जो हो सकती हैं। वैसे भी आपका जवाब ऊपर उठाया गया है, क्योंकि यह स्पष्ट रूप से क्लीनर है;) यह समझ में नहीं आता है, अगर मैं इसे दोहराता हूं, तो मैं अपने विकल्प को एक विकल्प के रूप में छोड़ दूंगा, जिसमें ज्यादातर मामलों को शामिल किया जा सकता है, लेकिन "यह साफ नहीं है"। अब भी मामला अप्रासंगिक है – KingCrunch

8

आप देख सकते हैं http:// स्ट्रिंग strpos() का उपयोग कर की शुरुआत में है।

$var = 'www.somesite.com'; 

if(strpos($var, 'http://') !== 0) { 
    return 'http://' . $var; 
} else { 
    return $var; 
} 

इस तरह, यदि वह var के बहुत शुरुआत में http:// नहीं है, यह http:// इसे के सामने वापस आ जाएगी। अन्यथा यह सिर्फ $var खुद ही वापस कर देगा।

+5

यदि मामला मेल नहीं खाता है, या यदि यूआरएल 'https: //' – Dutchie432

+0

से शुरू होता है तो यह असफल हो जाएगा, उस स्थिति में, कोई 'if (! Preg_match (' #^https 'जैसे तर्क का उपयोग कर सकता है? : // # ', $ var)) {' –

संबंधित मुद्दे