Jump to content

How do I split a string up into an Array of 1 and 2 character


james909

Recommended Posts

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.

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]

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));

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.