How to get substring of comma delimited string?

10,310

Solution 1

Using explode/implode:

$str     = 'a,b,c,d,e,f,g';
$temp1   = explode(',',$str);
$temp2   = array_slice($temp1, 0, 3);
$new_str = implode(',', $temp2);

Using regex:

$new_str = preg_replace('/^((?:[^,]+,){2}[^,]+).*$/','\1',$str);

Solution 2

try php's explode() function.

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

Loop through the array to get the values you want:

for($i = 0; $i < sizeof($string_array); $i++)
{
echo $string_array[$i];//display values
}

Solution 3

You can do so by finding the 100th delimiter:

$delimiter = ',';
$count = 100;
$offset = 0;
while((FALSE !== ($r = strpos($subject, $delimiter, $offset))) && $count--)
{
    $offset = $r + !!$count;
}
echo substr($subject, 0, $offset), "\n";

or similarly tokenize it:

$delimiter = ',';
$count = 100;
$len = 0;
$tok = strtok($subject, $delimiter);
while($tok !== FALSE && $count--)
{
    $len += strlen($tok) + !!$count;
    $tok = strtok($delimiter);
}
echo substr($subject, 0, $len), "\n";
Share:
10,310
Hard worker
Author by

Hard worker

Updated on June 04, 2022

Comments

  • Hard worker
    Hard worker almost 2 years

    I have a comma delimited string and want the first 100 entries (not including the 100th comma) as a single string.

    So for example if I had the string

    a,b,c,d,e,f,g
    

    And the problem was get the first 3 entries, the desired result string would be

    a,b,c