如何在php中获得由字母和数字组成的字符串中字母的最后位置


How can I get the last position of letters in a string formed by letters and numbers in 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>';
   }
}

但它总是说"是一个字母"…

我该怎么做呢?

分别获取字符和数字部分:

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