高效的字符串结束替换

时间:2011-08-21 08:53:59

标签: php replace

我想看看有没有办法在没有preg_replace的情况下执行此操作,只需要字符串函数。

我正在使用此

$str = "-41d3vUYHtK3D-GI3QXiVhvfR-zNooU7U_--2697";
preg_replace("/\-\d+$/i","",$str) 

删除后面的所有内容,包括最后一个“破折号”

2 个答案:

答案 0 :(得分:3)

如果不要求最后一个字符必须是数字,那么您可以使用substr [docs]strrpos [docs]

$str = substr($str, 0, strrpos($str, '-'));

或者在PHP 5.3.0中,strstr [docs]

$str = strstr($str, '-', true);

另一方面,如果以下字符是数字,如果要删除最后一个短划线和 字符,那么使用正则表达式将更容易。

答案 1 :(得分:2)

$str = "-41d3vUYHtK3D-GI3QXiVhvfR-zNooU7U_--2697";

for($i=strlen($str)-1;$i>=0;$i--){
    if($str[$i] == '-'){
        $result = substr($str,0,$i);
        break;
    }

}
echo $result;

返回-41d3vUYHtK3D-GI3QXiVhvfR-zNooU7U_-