rtrim只是字母而不是数字..

时间:2012-01-25 17:14:31

标签: php regex trim

我正在尝试编写一个函数来修剪字符串末尾的所有字母,直到它命中的第一个数字。

基本上我有儿童产品,item101S,item101xxx等,并且只想输出父产品item101。

不确定我是否应该使用正则表达式或!is_numeric或什么。

任何帮助将不胜感激!

谢谢!

6 个答案:

答案 0 :(得分:1)

php > $s="item101xxx";
php > $pattern="/[^\d]*\d+/";
php > echo preg_match($pattern, $s, $m);
1
php > print_r($m);
Array
(
    [0] => item101
)

答案 1 :(得分:1)

以下将删除字符串末尾的所有字母(a-z和A-Z)

$temp = 'item404Ssss';
echo preg_replace('/[a-zA-Z]+$/', '', $temp);

输出是:

item404

答案 2 :(得分:0)

这对你有什么用?

$string = 'item101S';
$string = preg_replace('/(.+?)[a-z]+$/i','$1',$string);

答案 3 :(得分:0)

仅使用sscanf()

进行演示
$data = array('item101S', 'item101xxx');

foreach($data as $datum) {
    list($parent,$number,$child) = sscanf($datum,'%[A-Za-z]%d%s');
    $parent = $parent.$number;
    echo $parent,' -> ',$child,PHP_EOL;
}

答案 4 :(得分:0)

function rtrim_letters( $input )
{
    $output = preg_replace('/[a-z]+$/i', '', $input );

    return $output;
}

答案 5 :(得分:0)

此函数将删除除字符串中最后一位数字后的数字以外的任何内容。如果字符串中没有数字,它将保持不变。

function strtrim( $str ) {
   return preg_replace('/(.+?\d)[^\d]*$/i', '$1', $str);
}

echo strtrim("item101S"); // item101
echo strtrim("paosdkpasd"); // paosdkpasd
echo strtrim("23121asd"); // 23121
echo strtrim("1321345+"); // 1321345

working example