假设我有一个像$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'
。
仅当最后一个“-”后跟数字字符串时,才能从最后一个“-”中切出字符串吗?
答案 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