কীভাবে আমি পিএইচপি-তে একটি কমা সীমিত স্ট্রিংকে একটি অ্যারে বিভক্ত করতে পারি?


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?
বিতরণ করুন

2
একটি উপায় হ'ল গণনা () ( ওরফ আকার
ম্যাথিউ

2
@ এমসিএলসিসক্রিয়েটিভ আপনার পছন্দ হতে পারে 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
শেষে আপনার লুপটি সরাসরি প্রশ্নের সাথে সম্পর্কিত হয়নি, তবে এটি আমার সমস্যার সাথে প্রাসঙ্গিক ছিল। এর জন্য ধন্যবাদ!
জেসি স্টিল 11

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

আরও জটিল পরিস্থিতিতে আপনার ব্যবহারের প্রয়োজন হতে পারে preg_split


30

যদি সেই স্ট্রিংটি কোনও সিএসভি ফাইল থেকে আসে তবে আমি ব্যবহার করব fgetcsv()(বা str_getcsv()আপনার পিএইচপি ভি 5.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 এই মত অনেক ওয়েবসাইট আছে। তবে আমি একটি সাধারণ পিএইচপি কোড পছন্দ করি।


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('@,@', $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 : []));
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.