2010-12-11 14 views
18

के साथ चर शुरू होता है, मुझे यकीन है कि यह एक साधारण समाधान है, मुझे बस वही चीज़ नहीं मिली है जो मुझे चाहिए।जांचें कि 'http'

PHP का उपयोग करके, मेरे पास एक परिवर्तनीय $ स्रोत है। मैं जांचना चाहता हूं कि $ स्रोत 'http' से शुरू होता है या नहीं।

if ($source starts with 'http') { 
$source = "<a href='$source'>$source</a>"; 
} 

धन्यवाद!

उत्तर

43
if (strpos($source, 'http') === 0) { 
    $source = "<a href=\"$source\">$source</a>"; 
} 

नोट मैं ===, का उपयोग नहीं == क्योंकि strpos रिटर्न बूलियन false यदि स्ट्रिंग मैच शामिल नहीं है। जीरो PHP में झूठा है, इसलिए अस्पष्टता को दूर करने के लिए एक सख्त समानता जांच आवश्यक है।

संदर्भ:

http://php.net/strpos

http://php.net/operators.comparison

+3

आप सुई के साथ भूसे के ढेर उलझन में। – Ben

+0

@ बेन: अच्छा पकड़, धन्यवाद। – Jonah

+0

एक आकर्षण की तरह काम किया। त्वरित उत्तर के लिए बहुत बहुत धन्यवाद :) और स्ट्रॉप्स – Andelas

12

आप substr() समारोह चाहते हैं।

if(substr($source, 0, 4) == "http") { 
    $source = "<a href='$source'>$source</a>"; 
} 
+0

ओह के साथ काम करता है, '0, 4',' 4' होने की आवश्यकता नहीं है। '4' सबकुछ प्राप्त होगा _but_ http :) – Jonah

+0

@ जोनाः जब आप टिप्पणी लिख रहे थे तो मैं संपादन कर रहा था। ["चुप रहो! मैं हमेशा ऐसा करता हूं। मैं हमेशा कुछ विशाल विवरण गड़बड़ करता हूं।" - माइकल बोल्टन] (http://www.imdb.com/title/tt0151804/) – AgentConundrum

+0

आपको इसका परीक्षण करना चाहिए, मेरा मानना ​​है कि यह पूरे स्ट्रिंग * को * स्थिति 4 –

5
if(strpos($source, 'http') === 0) 
    //Do stuff 
+0

शायद यह जांचने का सबसे शानदार तरीका है कि स्ट्रिंग PHP में कुछ सबस्ट्रिंग के साथ शुरू होती है या नहीं। – Robert

+0

लोल्वुत? आप वास्तव में पूछते हैं कि क्यों और बताते हैं कि 'स्ट्रॉप्स' (जो मैंने अभी सबसे सुंदर तरीका माना है) अधिक स्पष्ट है? – Robert

+0

@Robert: ओह, हे, मैं गलत पढ़ा। मैंने सोचा था कि आप कह रहे थे कि 'सबस्ट्र' समाधान बेहतर था। मेरी गलती :) – Jonah

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