字符串无用的字符条 - PHP

时间:2010-03-15 16:38:46

标签: php string numbers character

我遇到了一个很大的问题。我为我们网页上的内容制作了一个特殊ID。我们来看一个例子:

H0059 - 这是一个称为注册号的特殊ID。最后两个字符是事物的内容。

我想切断无用的字符,获取真实的ID,删除第一个字符的含义,以及任何其他数字之前的所有0。

示例:

L0745 => 745, V1754 => 1754, L0003 => 3, B0141 => 141, P0040 => 40, V8000 => 8000

请帮助我。

我尝试过strreplace并且爆炸但失败了:(感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

您可以使用:

preg_replace("/^[^1-9]*(.*?)$/","$1",$str) as:

<?php

$arr = array('L0745','V1754', 'L0003', 'B0141', 'P0040', 'V8000');

foreach($arr as $str) {

    $str = preg_replace("/^[^1-9]*(.*?)$/","$1",$str);

    var_dump($str);
}

?>

输出:

C:\>php a.php
string(3) "745"
string(4) "1754"
string(1) "3"
string(3) "141"
string(2) "40"
string(4) "8000"

使用的正则表达式的解释:^[^1-9]*(.*?)$

  • ^ - 锚点开始匹配 乞求的字符串。
  • $ - 锚定以匹配结尾 字符串。
  • [1-9] - 单个非零数字
  • [^1-9] - 一个非1-9个char ...可以 包括0或任何其他字母。
  • .*? - 与其他人匹配
  • () - 小组并记住......并使用替代。

这个正则表达式首先在字符串的字符串处传递非1-9字符并匹配并记住其余部分直到结束...并用记住的东西替换整个字符串。

答案 1 :(得分:3)

ltrim(substr($input, 1), '0');

substr在第一个字符处开始字符串,跳过该字母 ltrim将从正面删除所有零。

或者,如果您愿意: preg_replace('/^.0*/', '', 'L0003'); //returns 3

答案 2 :(得分:0)

在我看来,你想要切换键和数组的索引

尝试array_flip(array)

$arr = array(
   'L0745' => 745, 
   'V1754' => 1754, 
   'L0003' => 3, 
   'B0141' => 141, 
   'P0040' => 40, 
   'V8000' => 8000
);

$new_arr = array_flip($arr);

foreach($new_arr as $k=>$v) {
    echo "Key: ".$k." Value: ".$v."<br />";
}

echo "<pre>".print_r(array_flip($arr),true)."</pre>";