user1781482
user1781482

Reputation: 633

PHP split a string after certain character, but the string length varies

I use a radio button that gives me two variables concatenated and I need to separate them later. It gives me a time and a date in a format 11:30pm3, where 3 is the date and 11:30pm is the time. I can split it fine with my function but if the time is one digit, like 7:30pm for example, it throws things off. I can use military time but that's not what I want.Is there a way to change this so it splits the string right after character "m" so it will work for am/pm, regardless of the length of the time being 7:00am or 07:00am. Thanks in advance.

$string = $Radio;   //This is the value I get 
$MeetTime = substr("$string", 0, 7); //Gives me 11:30am
$MeetDay  = substr("$string", 7, 2); //Gives me 2 

Upvotes: 1

Views: 4339

Answers (3)

redshark1802
redshark1802

Reputation: 924

try this:

$date = '11:30am3';
$date = explode('pm', $date);
if(count($date) <= 2){
$date = explode('am', $date[0]);
}
print_r($date);

where $date[1] is the time and $day[0] the date. But you should use somet other format, I'd recommend timestamps.

Upvotes: 1

CodeAngry
CodeAngry

Reputation: 12985

if(preg_match('~^([\\d]{1,2}:[\\d]{1,2}[ap]m)([\\d]+)$~i', trim($string), $Matches)){
    var_dump($Matches); // See what this prints
}

Hope it helps.

Upvotes: 1

case1352
case1352

Reputation: 1136

find out where the m is and do your logic on that

if m is at 6 then its a full length one

$loc = stripos($string,"m");

if its at 5 then it's short so adjust your split

Upvotes: 1

Related Questions