仅当最后一个“-”之后的字符串是数字时,如何获取最后一个“-”之前的字符?
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;
假设我有像 $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;