2011-02-16 19 views
9

के साथ PHP में एक स्ट्रिंग को विभाजित करना मेरे पास एक इनपुट है जहां उपयोगकर्ता एकाधिक शब्दों में टाइप कर सकता है, और उन्हें इसे एक स्पेस से अलग करने के लिए कहा जाता है। तो इनपुट कुछ ऐसा दिखाई देगा:प्रत्येक रिक्त स्थान

foo 

या इस तरह:

foo bar php js 

मैं रिक्त स्थान के लिए कैसे जांच कर सकते हैं, और अगर वहाँ रिक्त स्थान हैं, शब्द, तो यह सब डाल विभाजित एक सरणी में? मैं अपने कार्यक्रम में उस सरणी के माध्यम से लूप लूंगा। मैं इस तरह हैंडलिंग स्ट्रिंग करने के लिए बस नया हूँ। के रूप में डैनियल कहा

+11

[Kaboom।] (http://www.php.net/explode) – BoltClock

उत्तर

43

explode

// Example 1 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
0

देखें, explode() स्थिति के इस प्रकार के लिए एकदम सही है। आप preg_split() (पूरी तरह से भविष्य के संदर्भ के लिए) देखना चाहते हैं क्योंकि यह केवल एक साधारण डेलीमीटर के बजाय रेगेक्स स्वीकार करता है और आपको एक अधिक जटिल पैटर्न पर इनपुट तोड़ने की अनुमति देगा।

+2

'split' बहिष्कृत है और बचा जाना चाहिए। यदि आपको रेगेक्स की आवश्यकता है, तो इसके बजाय 'preg_split' का उपयोग करें ... – ircmaxell

+0

@ircmaxell इसे प्रतिबिंबित करने के लिए अपडेट किया गया। यह दुर्भाग्यपूर्ण है कि उत्पादन वातावरण नवीनतम संस्करण के पीछे दौड़ते हैं, मैं भूल जाता हूं कि कुछ चीजें 5.3 में बहिष्कृत हैं – Endophage

8

हाँ explode आपके लिए हर चीज करेगा और foreach का उपयोग फिर से सरणी से मानों को पुनर्प्राप्त करने के लिए किया जा सकता है। आपका पूरा कोड निम्न जैसा होगा:

$str = "foo bar php js"; 
$arr = explode(" ", $str); 

//print all the value which are in the array 
foreach($arr as $v){ 
    echo $v; 
} 

आशा है कि यह आपकी मदद करेगा।

1

डैनियल पहले से ही स्लीपिटिंग भाग के बारे में पोस्ट कर चुका है, मुझे अंतरिक्ष भाग als के लिए जांच जोड़ने दें।

$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pizaa = trim($pizza); 
if(strpos($pizza,' ') >= 0) 
{ 

$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
}else { 
    echo $pizza; 
} 
0

अनुकूलन उद्देश्यों के लिए, मुझे लगता है कि विस्फोट समारोह का उपयोग करने से पहले डबल रिक्त स्थान जैसे अतिरिक्त रिक्त स्थान को निकालना बेहतर है। उदाहरण के लिए: यदि आपके पास "foo bar php js " है तो यह स्ट्रिंग विस्फोट फ़ंक्शन का उपयोग करने से पहले "foo bar php js" बननी चाहिए। आप इस कोड की कोशिश कर सकते हैं:

$charSet = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $charSet); 
$charSet = rtrim($charSet); 
$charSetArray = explode(" ", $charSet); 
echo $charSetArray[0]; 
echo $charSetArray[1]; 
संबंधित मुद्दे