仅当最后一个“-”之后的字符串为数字时,如何才能获取最后一个“-”之前的字符?

时间:2018-07-20 11:51:36

标签: php strpos

假设我有一个像$string = 'About-Us'这样的字符串,那么我将得到格式为$fdata = 'About-Us'的数据

但是,如果使用$string = 'About-Us-2',那么我将获得格式化后的数据,分别为$fdata = 'About-Us'$remain_data = '2'

我正在使用此代码:-

$fdata = substr( $string, 0, strrpos( $string, '-' ) );

但是,上面的代码在$fdata = 'About'时也剥离了$string = 'About-Us'

仅当最后一个“-”后跟数字字符串时,才能从最后一个“-”中切出字符串吗?

3 个答案:

答案 0 :(得分:1)

您的代码无法按照您想要的方式工作,因为您的语句检查了“-”的首次出现。 试试这个:-

$remain_data = substr($string, strrpos($string,'-'), -1);
$fdata = str_replace($remain_data, '', $string);

我希望这对您有用。

答案 1 :(得分:1)

您的方法正确。 strpos正在寻找子字符串的最后一次出现。

因此您只需检查最后一个字符串是否为数字:

$string = 'About-Us-2';
$fdata = is_numeric(substr($string, strrpos( $string, '-' )+1, strlen($string))) ? substr( $string, 0, strrpos( $string, '-' ) ) : $string;
$remain_data = is_numeric(substr($string, strrpos( $string, '-' )+1, strlen($string))) ? substr($string, strrpos( $string, '-' )+1, strlen($string)) : '';
echo $fdata;
echo $remain_data;

答案 2 :(得分:0)

检查以下代码:

$string = 'About-Us-2';
$string = preg_replace('/[0-9]+/', '', $string);//it will remove all numerics
$string = trim($string, '-');// then trim last '-'

输出将是:

About-Us