2015-01-09 2 views
3

Привет У меня есть длинная строкаSplit разделенных запятыми строк, но только разделить запятой

0BV,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD,1AG,1AKF....... 

Я хочу, чтобы показать его на странице сублимитами ужалить их

как

0BV,0BW,100,102,108,112,146 
163191,192,193,1D94,19339 
1A1,1AA,1AE,1AFD,1AG,1AKF 

Я хочу создать подстроки из строки длиной 100 символов, но если 100-й символ не является запятой, я хочу проверить следующую запятую в строке и разделить на нее.

Я пытался использовать chunk() разделить на количество слов, но так как длины подстрок разные, она показывает неприемлемое на странице

$db_ocode = $row["option_code"]; 

$exclude_options_array = explode(",",$row["option_code"]); 
$exclude_options_chunk_array = array_chunk($exclude_options_array,25); 

$exclude_options_string = ''; 
foreach($exclude_options_chunk_array as $exclude_options_chunk) 
{ 
    $exclude_options_string .= implode(",",$exclude_options_chunk); 
    $exclude_options_string .= "</br>"; 
} 

Пожалуйста, помогите. заранее заранее

ответ

3

Возьмите строку, установите положение отсечки. Если эта позиция не содержит запятой, тогда найдите первую запятую после этой позиции и отрежьте ее. Простой

<?php 

$string="0BV,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD"; 

$cutoff=30; 
if($string[$cutoff]!=",") 
    $cutoff=strpos($string,",",$cutoff); 
echo substr($string,0,$cutoff); 

Fiddle

2
(.{99})(?=,),|([^,]*), 

Вместо раскола вы можете захватить снимки что значительно easy.See демо для 20 символов.

https://regex101.com/r/sH8aR8/37

+1

Хороший ответ :). Является ли это 99-й скрипкой для скрипки для 19. К сожалению, ее нет, потому что 99 - это то, чего хотел OP. –

+0

@Hanky ​​웃 Panky no OP хочет для символов '100'. Символ' 100th' - '' '' '' '{99}' – vks

1

Используя ответ шуры муры, я был в состоянии обеспечить полное решение моей проблемы, спасибо очень много платков муры. Если мой код не эффективен, пожалуйста, отредактируйте его.

$string="0BV,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD"; 

for($start=0;$start<strlen($string);) { 

     $cutoff=30; 
     if(isset($string[$start+$cutoff]) && $string[$start+$cutoff]!=",") 
     { 
      $cutoff=strpos($string,",",$start+$cutoff);   
     } 
     else if(($start+$cutoff) >= strlen($string)) 
     { 
      $cutoff = strlen($string); 
     } 
     else if($start >= 30) 
     { 
      $cutoff = $start + $cutoff; 
     } 

     echo substr($string,$start,$cutoff-$start)."\n"; 
     $start=$cutoff+1; 
    } 
0

В случае питона

ln=0 
i=1 
str='0BVAa,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD,1AG,1AKF' 
for item in str: 
    print (item), 
    ln=ln+len(item) 
    if ln/10>=i and item==',': 
     print "" 
     i=i+1 
Смежные вопросы