我试图使一个自动计数器获得我的数据库的最后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>';
}
}
但它总是说"是一个字母"…
我该怎么做呢?
分别获取字符和数字部分:
$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
你可以试试。
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;
}
返回最后一个字符的简单函数,您如何处理它取决于您:
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');
结果:u
list($characters,$digits) = sscanf('%[A-Z]%d', $myString);
$lastCharacter = substr($characters, -1);
使用字符串长度作为索引:
PHP中的字符串也可以表现为字符数组。因此,我们可以通过简单的语法访问它们中的每一个,如:$string[n]
。其余的都是使用字符串长度作为检索最后一个字母的索引。
可以在代码中翻译如下:
$myString = 'Hello World';
$lastLetter = $myString[strlen($myString)-1];
问候,M
关于substr的php手册说只使用substr($foo, -1)
。你试过吗?