PHP从右到左回显字符串的一部分

时间:2012-07-18 02:12:29

标签: php string substr strpos

我试图从这个字符串的末尾获取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);

5 个答案:

答案 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);

PHP manual