1

今日、私はこの問題に遭遇しました。分割/区別する方法は str であり、ランダムな入力から int ですか? 例、私のユーザーは以下のように入力できます:-

  1. A1 > str:A, int:1
  2. AB1 > str:AB, int:1
  3. ABC > str:ABC, int:1
  4. A12 > str:A, int:12
  5. A123 > str:A, int:123

現在のスクリプトは substr(input,0,1) を使用して str を取得し、substr(input,-1) を使用して int を取得していますが、ケース 2,3,4,5 またはその他のスタイルの入力があるとエラーが発生しますユーザー入力

ありがとう

4

4 に答える 4

8
list($string, $integer) = sscanf($initialString, '%[A-Z]%d');
于 2013-05-29T15:18:30.420 に答える
5

次のような正規表現を使用します。

// $input contains the input
if (preg_match("/^([a-zA-Z]+)?([0-9]+)?$/", $input, $hits))
{
    // $input had the pattern we were looking for
    // $hits[1] is the letters
    // $hits[2] holds the numbers
}

式は次のものを探します

^               start of line
([a-zA-Z]+)?    any letter upper or lowercase
([0-9]+)?       any number
$               end of line

(..+)?この場合、+は「1 つ以上」を?意味し、 は を意味し0 or 1 timesます。したがって、長くて表示されるか表示されない sth を探しています

于 2013-05-29T15:17:44.430 に答える
1

これはどう?正規表現

$str = 'ABC12';
preg_match('/[a-z]+/i', $str, $matches1);
preg_match('/[0-9]+/', $str, $matches2);

print_r($matches1);
print_r($matches2);
于 2013-05-29T15:35:48.797 に答える