【问题标题】:How can I find the last occurence of a character in a string and get everything before it?如何找到字符串中最后一次出现的字符并获取它之前的所有内容?
【发布时间】:2014-07-28 01:12:44
【问题描述】:

现在,我正在做:

$lastpart = strrchr( $string, '-');
$firstpart = str_replace($lastpart, '', $string);

$array = explode('-',$string);
array_pop($array);
$firstpart = implode('-',$array);

但似乎必须有一个本地函数可以同时完成所有这些。有没有一个函数可以找到字符串的最后一次出现并返回它之前的所有内容?

只是澄清一下,这些解决方案工作正常,但我正在寻找 native 函数。

【问题讨论】:

  • 你能显示你想找到的字符串最后一部分吗?
  • @Zerquix18,我想要一个适用于任何字符串的原生 php 函数。
  • 只是为了澄清没有本机功能。 :)

标签: php replace substring


【解决方案1】:

您可以使用http://www.php.net/manual/en/function.strrpos.php

$newString = substr($oldString, 0, strrpos($oldString, $character));

【讨论】:

  • 这并不能完全回答我的问题(对于本机函数),但它比我一直使用的两个更好的解决方案。
  • 这里没有原生函数,只有最后一个字符的原生函数。这是非常典型的 PHP 字符串处理程序,让您可以灵活地组合它们以用于特定用途。
  • 我会给你支票,因为你是在一行上完成的,即使 @Justin-iurman 比你早 20 秒回答了同样的解决方案。
【解决方案2】:

你可以使用正则表达式:

考虑a 是您要查找的字符串:

$string = preg_replace('/(.*)a([^a])*$/', '\\1', 'asdfabcd');

这里的$string 将导致asdf

参考:php.net/preg_replace

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多