3

Hi I have a long string

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

I want to show it in a page by sub sting them

like

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

What i want to do is create sub strings from the string , length of 100 characters , but if the 100 th character is a not a comma i want to check the next comma in the string and split by that .

I tried to use chunk() to split by word count , but since the sub-string lengths are different , it is showing inappropriate in the page

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

Please help . thanks in advance

Kanishka Panamaldeniya
  • 17,302
  • 31
  • 123
  • 193

4 Answers4

3

Take the string, set the cutoff position. If that position does not contain a comma then find the first comma after that position and cut off there. Simple

<?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

Hanky Panky
  • 46,730
  • 8
  • 72
  • 95
2
(.{99})(?=,),|([^,]*),

Instead of split you can grab the captures which is much easy.See demo for 20 characters.

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

vks
  • 67,027
  • 10
  • 91
  • 124
  • 1
    Nice answer :). Is that 99 a typo cause fiddle is for 19. Oops sorry its not, because that 99 is what the OP wanted. – Hanky Panky Jan 09 '15 at 05:50
  • @Hanky웃Panky no OP wants for `100` characters.The `100th` character is that `,` after `.{99}` – vks Jan 09 '15 at 06:05
1

Using Hanky Panky's answer i was able to provide a complete solution to my Problem , Thank you very much Hanky panky . If my code is not efficient ,Kindly please edit it .

$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;
    }
Kanishka Panamaldeniya
  • 17,302
  • 31
  • 123
  • 193
0

In case python

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
Ash
  • 355
  • 1
  • 2
  • 7