मैं कैसे PHP में एक सरणी में एक अल्पविराम सीमांकित स्ट्रिंग को विभाजित कर सकता हूं?


263

मुझे अपने स्ट्रिंग इनपुट को अल्पविराम में एक सरणी में विभाजित करने की आवश्यकता है।

मैं इसे पूरा करने के बारे में कैसे जा सकता हूं?

इनपुट:

9,admin@example.com,8

8
बस एक नोट, जानकारी की न्यूनतम राशि और खराब शब्द के कारण लोग आपको नीचा दिखा रहे हैं।
ट्रोग्गी जूल

@ ट्रोगी - मेरे संपादन के दौरान मैंने इसे सुपाठ्य अंग्रेजी में बदलने के लिए निर्धारित किया, लेकिन तब मुझे एहसास हुआ कि यह शायद कई अन्य प्रश्नों का एक डुप्लिकेट होगा
जॉन रास्च

3
कोई प्रश्न बहुत बुनियादी नहीं है, लेकिन आप स्ट्रिंग हैंडलर के कार्यों पर एक नज़र डाल सकते हैं। इसलिए नहीं कि यह बुरा सवाल है बल्कि डॉक्स में कुछ ढूंढना अच्छा लगता है और कभी-कभी तेज।
बजे Csaba Kétszeri

जवाबों:


553

विस्फोट करने की कोशिश करें :

$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
print_r($myArray);

आउटपुट:

Array
(
    [0] => 9
    [1] => admin@example.com
    [2] => 8
)

1
आप कैसे गिन सकते हैं? .lengh?
delive

2
एक तरीका है गिनती () (उर्फ साइज़ोफ़
मैथ्यू ग्रूव्स

2
@McLosysCreative आप भी पसंद कर सकते हैं var_dumpजो अधिक विस्तृत जानकारी देता है। इससे भी अधिक उपयोगी है var_export($myArray, true)क्योंकि यह var_dumpएक स्ट्रिंग के रूप में आउटपुट देता है ताकि आप इसे किसी भी लॉग में बिना उत्पन्न हुए साइट पर स्टोर कर सकें ...
टॉमाज़ कपालोस्की

58
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
foreach($myArray as $my_Array){
    echo $my_Array.'<br>';  
}

उत्पादन

9
admin@example.com
8

1
अंत में आपका लूप सीधे प्रश्न से संबंधित नहीं था, लेकिन यह मेरी समस्या के लिए प्रासंगिक था। इसके लिए धन्यवाद!
जेसी स्टील

34
$string = '9,admin@google.com,8';
$array = explode(',', $string);

अधिक जटिल स्थितियों के लिए, आपको उपयोग करने की आवश्यकता हो सकती है preg_split


30

यदि वह स्ट्रिंग एक सीएसवी फ़ाइल से आती है, तो मैं fgetcsv()(या str_getcsv()यदि आपके पास PHP V5.3 है) का उपयोग करेगा । यह आपको उद्धृत मूल्यों को सही ढंग से पार्स करने की अनुमति देगा। यदि यह एक सीएसवी नहीं है, explode()तो सबसे अच्छा विकल्प होना चाहिए।


2

कोड:

$string = "9,admin@example.com,8";

$array  = explode(",", $string);

print_r($array);

$no = 1;
foreach ($array as $line) {
    echo $no . ". " . $line . PHP_EOL;
    $no++;
};

ऑनलाइन:

body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}
<iframe src="https://ideone.com/pGEAlb" ></iframe>


0

सरल तरीके से आप के साथ जा सकते हैं explode($delimiter, $string);

लेकिन एक व्यापक तरीके से, मैनुअल प्रोग्रामिंग के साथ:

        $string = "ab,cdefg,xyx,ht623";
        $resultArr = [];
        $strLength = strlen($string);
        $delimiter = ',';
        $j = 0;
        $tmp = '';
        for ($i = 0; $i < $strLength; $i++) {
            if($delimiter === $string[$i]) {
                $j++;
                $tmp = '';
                continue;
            }
            $tmp .= $string[$i];
            $resultArr[$j] = $tmp;
        }

चौकी: print_r($resultArr);

Array
(
    [0] => ab
    [1] => cdefg
    [2] => xyx
    [3] => ht623
)

0

सबसे अच्छा विकल्प "विस्फोट" () फ़ंक्शन का उपयोग करना है।

$content = "dad,fger,fgferf,fewf";
$delimiters =",";
$explodes = explode($delimiters, $content);

foreach($exploade as $explode) {
    echo "This is a exploded String: ". $explode;
}

यदि आप एक तेज़ दृष्टिकोण चाहते हैं, तो आप एक परिसीमन उपकरण का उपयोग कर सकते हैं, जैसे Delimiters.co । इस तरह की कई वेबसाइटें हैं। लेकिन मैं एक सरल PHP कोड पसंद करता हूं।


0

explode वास्तविक जीवन में कुछ बहुत बड़ी समस्याएं हैं:

count(explode(',', null)); // 1 !! 
explode(',', null); // [""] not an empty array, but an array with one empty string!
explode(',', ""); // [""]
explode(',', "1,"); // ["1",""] ending commas are also unsupported, kinda like IE8

यही कारण है कि मैं preg_split पसंद करते हैं

preg_split('@,@', $string, NULL, PREG_SPLIT_NO_EMPTY)

पूरे बॉयलरप्लेट:

/** @brief wrapper for explode
 * @param string|int|array $val string will explode. '' return []. int return string in array (1 returns ['1']). array return itself. for other types - see $as_is
 * @param bool $as_is false (default): bool/null return []. true: bool/null return itself.
 * @param string $delimiter default ','
 * @return array|mixed
 */
public static function explode($val, $as_is = false, $delimiter = ',')
{
    // using preg_split (instead of explode) because it is the best way to handle ending comma and avoid empty string converted to ['']
    return (is_string($val) || is_int($val)) ?
        preg_split('@' . preg_quote($delimiter, '@') . '@', $val, NULL, PREG_SPLIT_NO_EMPTY)
        :
        ($as_is ? $val : (is_array($val) ? $val : []));
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.