मुझे अपने स्ट्रिंग इनपुट को अल्पविराम में एक सरणी में विभाजित करने की आवश्यकता है।
मैं इसे पूरा करने के बारे में कैसे जा सकता हूं?
इनपुट:
9,admin@example.com,8
मुझे अपने स्ट्रिंग इनपुट को अल्पविराम में एक सरणी में विभाजित करने की आवश्यकता है।
मैं इसे पूरा करने के बारे में कैसे जा सकता हूं?
9,admin@example.com,8
जवाबों:
विस्फोट करने की कोशिश करें :
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
print_r($myArray);
आउटपुट:
Array
(
[0] => 9
[1] => admin@example.com
[2] => 8
)
var_dump
जो अधिक विस्तृत जानकारी देता है। इससे भी अधिक उपयोगी है var_export($myArray, true)
क्योंकि यह var_dump
एक स्ट्रिंग के रूप में आउटपुट देता है ताकि आप इसे किसी भी लॉग में बिना उत्पन्न हुए साइट पर स्टोर कर सकें ...
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
foreach($myArray as $my_Array){
echo $my_Array.'<br>';
}
उत्पादन
9
admin@example.com
8
$string = '9,admin@google.com,8';
$array = explode(',', $string);
अधिक जटिल स्थितियों के लिए, आपको उपयोग करने की आवश्यकता हो सकती है preg_split
।
यदि वह स्ट्रिंग एक सीएसवी फ़ाइल से आती है, तो मैं fgetcsv()
(या str_getcsv()
यदि आपके पास PHP V5.3 है) का उपयोग करेगा । यह आपको उद्धृत मूल्यों को सही ढंग से पार्स करने की अनुमति देगा। यदि यह एक सीएसवी नहीं है, explode()
तो सबसे अच्छा विकल्प होना चाहिए।
कोड:
$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>
सरल तरीके से आप के साथ जा सकते हैं 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
)
सबसे अच्छा विकल्प "विस्फोट" () फ़ंक्शन का उपयोग करना है।
$content = "dad,fger,fgferf,fewf";
$delimiters =",";
$explodes = explode($delimiters, $content);
foreach($exploade as $explode) {
echo "This is a exploded String: ". $explode;
}
यदि आप एक तेज़ दृष्टिकोण चाहते हैं, तो आप एक परिसीमन उपकरण का उपयोग कर सकते हैं, जैसे Delimiters.co । इस तरह की कई वेबसाइटें हैं। लेकिन मैं एक सरल PHP कोड पसंद करता हूं।
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 : []));
}