如何在php中的字母和数字形成的字符串中获取字母的最后位置

时间:2014-05-22 17:16:36

标签: php

我正在尝试创建一个自动计数器来获取数据库的最后一个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>';
   }
}

但它总是说“是一封信”......

我能为此做些什么?

6 个答案:

答案 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)。你试过吗?