Akhil P M
Akhil P M

Reputation: 182

Isolate substring at end of string after a specific substring

My query generates a result set of UID values which looks like:

855FM21
855FM22
etc

I want to isolate the last number from the UID which it can be done by splitting the string.

How to split this string after the substring "FM"?

Upvotes: 6

Views: 23098

Answers (7)

mickmackusa
mickmackusa

Reputation: 47874

As a matter of best practice, never ask for more from your mysql query than you actually intend to use. The act of splitting the uid can be done in the query itself -- and that's where I'd probably do it.

SELECT SUBSTRING_INDEX(uid, 'FM', -1) AS last_number FROM `your_tablename`

If you need to explode, then be practice would indicate that the third parameter of explode() should set to 2. This way, the function doesn't waste any extra effort looking for more occurrences of FM.

echo explode('FM', $uid, 2)[1];  // 21

If you want to use php to isolate the trailing number in the uid, but don't want explode() for some reason, here are some wackier / less efficient techniques:

$uid = '855FM21';
echo strtok($uid, 'FM') ? strtok('FM') : '';  // 21

echo preg_replace('~.*FM~', '', $uid);  // 21

echo ltrim(ltrim($uid, '0..9'), 'MF');  // 21

Upvotes: 2

raiserle
raiserle

Reputation: 696

$uid = '123FM456';
$ArrUid = split( $uid, 'FM' );
if( count( $ArrUid ) > 1 ){
    //is_numeric check ?!
    $lastNumbers = $ArrUid[1];
}
else{
    //no more numbers after FM
}

You can also use regular expressions to extract the last numbers!

a simple example

$uid = '1234FM56';
preg_match( '/[0-9]+fm([0-9]+)/i', $uid, $arr );
print_r($arr); //the number is on index 1 in $arr -> $arr[1]

Upvotes: 0

Manishdlbr
Manishdlbr

Reputation: 92

For it,please use the explode function of php.

$UID = "855FM21";
$splitToArray = explode("FM",$UID);
print_r($splitToArray[1]);

Upvotes: 3

waelhe
waelhe

Reputation: 381

use explode function it returns array. to get the last index use echo $array[count($array) - 1];

    <?php
     $str = "123FM23";
     $array = explode("FM",$str);
     echo $array[count($array) - 1];
    ?>

Upvotes: 3

hfrahmann
hfrahmann

Reputation: 93

You can use the explode() method.

<?php
$UID = "855FM21";
$stringParts = explode("FM", $UID);

$firstPart  = $stringParts[0]; // 855
$secondPart = $stringParts[1]; // 21

?>

Upvotes: 3

Timelimelim
Timelimelim

Reputation: 186

Have you tried the explode function of php?

http://php.net/manual/en/function.explode.php

Upvotes: 2

Mithun Satheesh
Mithun Satheesh

Reputation: 27845

To split this string after the sub string "FM", use explode with delimiter as FM. Do like

$uid = "855FM22";
$split = explode("FM",$uid);
var_dump($split[1]);

Upvotes: 19

Related Questions