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

How to get the characters before the last “-” only if the string after the last "-" is numeric?

假设我有像 $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'.

如何只在最后一个“-”后跟数字字符串时从最后一个“-”中截取字符串?

检查以下代码:

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

输出将是:

About-Us

您的代码没有按您希望的方式工作,因为您的语句检查了“-”的第一次出现。 试试这个:-

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

希望这对你有用。

你走对了。 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;