在特定子字符串之后隔离字符串末尾的子字符串
Posted
技术标签:
【中文标题】在特定子字符串之后隔离字符串末尾的子字符串【英文标题】:Isolate substring at end of string after a specific substring 【发布时间】:2014-12-04 03:18:49 【问题描述】:我的查询生成一组 UID 值,如下所示:
855FM21
855FM22
etc
我想从 UID 中分离出最后一个数字,这可以通过拆分字符串来完成。
如何在子字符串“FM”之后拆分这个字符串?
【问题讨论】:
【参考方案1】:要在子字符串“FM”之后拆分此字符串,请使用explode
,分隔符为FM
。喜欢
$uid = "855FM22";
$split = explode("FM",$uid);
var_dump($split[1]);
【讨论】:
【参考方案2】:你可以使用explode()方法。
<?php
$UID = "855FM21";
$stringParts = explode("FM", $UID);
$firstPart = $stringParts[0]; // 855
$secondPart = $stringParts[1]; // 21
?>
【讨论】:
【参考方案3】:使用explode函数返回数组。要获取最后一个索引,请使用 echo $array[count($array) - 1];
<?php
$str = "123FM23";
$array = explode("FM",$str);
echo $array[count($array) - 1];
?>
【讨论】:
此解决方案可能是一个更好的答案,因为它获取最后一段并且不假设针只存在一次。【参考方案4】:请使用php的explode功能。
$UID = "855FM21";
$splitToArray = explode("FM",$UID);
print_r($splitToArray[1]);
【讨论】:
这个确切的建议已经在 14 分钟前发布,并且存在于接受的答案中。这个答案没有给页面增加新的价值。【参考方案5】:你试过php的explode功能吗?
http://php.net/manual/en/function.explode.php
【讨论】:
本手册参考可以作为问题下方的评论提供。 Stack Overflow 不想成为流量路由器,它希望将已发布问题的特定答案硬编码到此页面上的答案中。【参考方案6】:作为最佳实践,永远不要从你的 mysql 查询中要求比你实际打算使用的更多。拆分uid
的行为可以在查询本身中完成——这就是我可能会这样做的地方。
SELECT SUBSTRING_INDEX(uid, 'FM', -1) AS last_number FROM `your_tablename`
如果你需要爆炸,那么实践会指出explode()
的第三个参数应该设置为2
。这样,该函数就不会浪费任何额外的精力来寻找更多的FM
。
echo explode('FM', $uid, 2)[1]; // 21
如果你想使用 php 来隔离 uid 中的尾随数字,但由于某种原因不想要explode()
,这里有一些更古怪/效率较低的技术:
$uid = '855FM21';
echo strtok($uid, 'FM') ? strtok('FM') : ''; // 21
echo preg_replace('~.*FM~', '', $uid); // 21
echo ltrim(ltrim($uid, '0..9'), 'MF'); // 21
【讨论】:
【参考方案7】:$uid = '123FM456';
$ArrUid = split( $uid, 'FM' );
if( count( $ArrUid ) > 1 )
//is_numeric check ?!
$lastNumbers = $ArrUid[1];
else
//no more numbers after FM
你也可以使用正则表达式来提取最后的数字!
一个简单的例子
$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]
【讨论】:
以上是关于在特定子字符串之后隔离字符串末尾的子字符串的主要内容,如果未能解决你的问题,请参考以下文章