我试图从这个字符串的末尾获取ID - 430之后的 - 。下面的代码从左到右工作,并显示150.如何让它从右到左工作,以显示4305之后 - ?
$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$mystring = substr($mystring, 0, strpos($mystring, "-"));
echo $mystring;
更新:这是我需要的,但我确信有更好的方法来编写它:
$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$mystring = substr(strrev($mystring), 0, strpos(strrev($mystring), "-"));
echo strrev($mystring);
答案 0 :(得分:5)
您可以使用strrpos
获取字符串中的最后一个连字符,然后在此字符后面取其余字符串。
$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$mystring = substr($mystring, strrpos($mystring, "-") + 1);
echo $mystring;
答案 1 :(得分:4)
将-
拆分为数组,然后弹出最后一个元素:
$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$parts = explode("-", $mystring);
echo array_pop($parts);
或者,如果您需要保持数组完整,请使用end()
前进到最后一个元素并返回它:
echo end($parts));
这比使用strrpos()
效率低,但在不是问题的情况下,我会倾向于使用这种方法,因为它不需要我多思考字符串索引,如果你是需要不在第一个或最后一个分隔位置,拉数组索引比从内部部分拉出所需的字符串操作要容易一些。
答案 2 :(得分:2)
如果你喜欢我的同事之一喜欢使用正则表达式来做一切......那么
$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
preg_match('~-(\d+)$~', $mystring, $matches);
echo $matches[1];
答案 3 :(得分:0)
最简单的方法肯定是使用explode。
通过使用explode,您可以将字符串拆分为一个数组,每个部分都可以使用索引作为单独的标识符进行访问。
用法示例:
$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$mystring = explode("-", $mystring);
echo $mystring[count($mystring)-1]; //Extract the last item
答案 4 :(得分:0)
正如Matthew在上面的评论中所说,反向扫描速度更快,因为匹配仅在4个步骤之后完成 - 猜测没有“更合适的方法”将需求转换为PHP语法(这也是他们教我时的方式)我学习了C语法):
echo substr($mystring, strrpos($mystring, "-") + 1);