james909 Posted July 17, 2013 Share Posted July 17, 2013 (edited) I have the following alpha-numeric example string $string = "1AJ4dH4c2bRfa6"; which I want my php to split upto in the following array, into 1 characters, unless the character is a lower case a,b,c or d then i want the following character to be added to that array value: stringarray[1] = "1"; stringarray[2] = "A"; stringarray[3] = "J"; stringarray[4] = "4"; stringarray[5] = "dH"; stringarray[6] = "4"; stringarray[7] = "c2"; stringarray[8] = "bR"; stringarray[9] = "f"; stringarray[10] = "a6"; The string that needs splitting up could be longer or shorter than this example. I have tried string split, but this can only split the string into array value lengths of 1 or 2, not how I want: $stringarray = str_split($string, 1); $stringarray = str_split($string, 2); What is the code for: if the charater is aphanumeric (1-0 A-Z a-z) I need the it to be split into an array value of 1 character, with the exception of if the character is lower case a, b, c or d then the next character needs to be added to that array value. Edited July 17, 2013 by james909 Quote Link to comment Share on other sites More sharing options...
Solution requinix Posted July 17, 2013 Solution Share Posted July 17, 2013 Think of it less like splitting the string and more like finding all the characters and pairs of characters. How to do that? Reeegulaaar expreeessions. With preg_match_all(). preg_match_all('/[abcd]?./', $string, $matches); // and use $matches[0] Quote Link to comment Share on other sites More sharing options...
gizmola Posted July 17, 2013 Share Posted July 17, 2013 requinix provided a great solution with regex. Just for the fun of it, I tried to whip up a quickie function and this one would also do the job. I provide it purely for amusement: <?php $string = "1AJ4dH4c2bRfa6"; function my_split($string) { $size = strlen($string); $result = array(); $t = ''; for ($i = 0; $i < $size; $i++) { if ($string[$i] >= 'a' and $string[$i] <= 'd') { $t = $string[$i]; } else { $t .= $string[$i]; $result[] = $t; $t = ''; } } return $result; } var_dump(my_split($string)); Quote Link to comment Share on other sites More sharing options...
james909 Posted July 17, 2013 Author Share Posted July 17, 2013 thank you requinix preg_match_all is working nicely. and also thank you gizmola, always good to have a back up function if the version of php doesn't support preg_match_all Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.