Jump to content

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


Go to solution Solved by requinix,

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.

Edited by james909
  • Solution

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));
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.