我遇到了一个很大的问题。我为我们网页上的内容制作了一个特殊ID。我们来看一个例子:
H0059 - 这是一个称为注册号的特殊ID。最后两个字符是事物的内容。
我想切断无用的字符,获取真实的ID,删除第一个字符的含义,以及任何其他数字之前的所有0。
示例:
L0745 => 745, V1754 => 1754, L0003 => 3, B0141 => 141, P0040 => 40, V8000 => 8000
请帮助我。
我尝试过strreplace并且爆炸但失败了:(感谢您的帮助。
答案 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)
在我看来,你想要切换键和数组的索引
$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>";