2012-05-11 1 views
3

У меня есть строка с разделителями-запятыми и хочу, чтобы первые 100 записей (не считая 100-й запятой) были как одна строка.Как получить подстроку строки с разделителями-запятыми?

Так, например, если у меня была строка

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

И проблема была получить первые 3 записи, нужная строка результата будет

a,b,c 

ответ

4

Использование взрываются/Implode:

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

Использование регулярных выражений:

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

Если вы собираетесь использовать 'explode' для этого, перейдите в 3-й параметр' limit', установленный в 1 + количество элементов, которые вы хотите ограничить потраченное впустую. http://php.net/manual/en/function.explode.php –

1

explode() функция попробовать PHP.

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

Loop через массив, чтобы получить значения, которые вы хотите:

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

Один из способов разбить строку после запятой и поставить первые 100 индексов вместе (через запятую). Перед этим вы должны проверить, если счетчик (массив) больше или меньше, чем 100.

1

Вы можете сделать это, найти 100-разделитель:

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

или аналогичным образом разметить его:

$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";