我正在尝试创建一个自动计数器来获取数据库的最后一个ID。我保留带有字母数字id的行:
AR1,AR2,AR3,TER17,KAKAP126 ......
它是数据库中的varchar所以我不能制作+1。所以我想检测字符(字母)的结尾并从id中删除它们,添加+1并将数字连接到字母部分。
我试过了:
$s = $rowAtt['id']; (ie: TUR99)
echo $s;
echo "<br>";
for ($i = 1; $i <= strlen($s); $i++){
$char = $a[$i-1];
if (is_numeric($char)) {
echo $char . ' is a number<br>';
} else {
echo $char . ' is a letter<br>';
}
}
但它总是说“是一封信”......
我能为此做些什么?
答案 0 :(得分:2)
这是你可以尝试的东西。
function getLastLetter($str) {
$str = preg_replace('/[^a-zA-Z]/', '', $str);
return substr($str, -1);
}
function getLastLetterPosition($str) {
$str = preg_replace('/[^a-zA-Z]/', '', $str);
return strlen($str) - 1;
}
答案 1 :(得分:2)
分别获取角色和数字部分:
$testString="AAAK12";
$chars = preg_split("/[0-9]+/", $testString);
$nums = preg_split("/[a-zA-Z]+/", $testString);
echo "Chars are " . $chars[0] . "\n";
echo "Nums are " . $nums[1] . "\n";
结果:
Chars are AAAK
Nums are 12
答案 2 :(得分:1)
简单的函数将返回最后一个字符,你用它做什么取决于你:
function getLastChar($string)
{
$newString = strrev($string);
for($i=0;$i<=strlen($string);$i++)
{
if(!is_numeric($newString[$i])) return $newString[$i];
}
return false;
}
echo getLastChar('askdjwu12312');
结果:你
答案 3 :(得分:1)
list($characters,$digits) = sscanf('%[A-Z]%d', $myString);
$lastCharacter = substr($characters, -1);
答案 4 :(得分:1)
使用字符串长度作为索引:
PHP中的字符串也可以表现为字符数组。因此,我们可以通过简单的语法访问每一个:$string[n]
。其他一切都是使用字符串长度作为索引来检索最后一个字母。
这可以在代码中翻译如下:
$myString = 'Hello World';
$lastLetter = $myString[strlen($myString)-1];
此致 中号
答案 5 :(得分:0)
php manual on substr表示只使用substr($foo, -1)
。你试过吗?