2017-09-25 1 views
-2

私は初心者だので、私はこれについてどんな考えを持っていないので、私は何をしようとしたんPHPで1つの単語列からデータを分割する方法は?

$string = "RC9999999999A202"; 

//Need to split as follows: 

$code = "RC"; //This value must be of 2 alphabetic characters 
$phone = "9999999999"; //This value must be of 10 digits 
$amount = "202"; //This value can be of any length (numeric only) 

、以下のような単一の単語列からデータを分割する必要があります。

助けてください!

マイナス評価を残さないでください。代わりに私を助けてください。

+3

"私は何も試していませんでした" - OK、http://php.net/manual/en/function.preg-match.phpを試してみてください。 –

+0

'[AZ]'は大文字のアルファベット'A'と' Z'。 '[0-9]'は任意の単一の数字です。 '{}'は範囲または許容文字数を作成できます。 '+'は前のグループ/文字の1つ以上を許可する量子です。 '*'はゼロ以上です。それから構築する。最初のvar '[A-Z] {2}'は2つの大文字のアルファ文字を許可します。 – chris85

+3

本当に正規表現が必要ですか?文字列がその形式であることを検証する必要がありますか、またはそれがその形式であることを既に知っていますか?その場合、部分文字列を取ることができます。 –

答えて

0

これはあなたの仕様に応じて一致し、変数のコードを移植します、電話をし、量。

$string = "RC9999999999A202"; 

Preg_match("/([A-Z]{2})(\d{10})A(\d+)/", $string, $match); 

List($string, $code, $phone, $amount) = $match; 

https://3v4l.org/QXVRA

このパターンは、 "A" は常に "A" であると想定。
あなたは質問に全く言及していないので、私はそれが常に「A」だと仮定します。

1

あなたは、あなたはあなたが単にsubstrそうのような使用して欲しいものを得ることができ、その後文字の任意の数字が続く桁文字を説明したように、あなたの文字列が常になります場合は、次の

$string = "RC9999999999A202"; 

echo $code = substr($string, 0, 2); // get first 2 chars 
echo $phone = substr($string, 2, 10); // get 10 chars starting from 3d char 
echo $amount = substr($string, 12); // get whatever chars left 

注意を:この方法ではデータは検証されません。質問に記載されている内容に基づいて文字列に含まれるものを抽出します。

+0

これは値のいずれも確認しません。 'この値は2文字のアルファベット文字でなければならない。 ' – chris85

+0

私は彼が必要とするのは、検証に必要な値を得ることだけだと思った。 – teeyo

+0

@teeyo preg_matchを使用する –

0

あなたはpreg_matchために、この正規表現を使用することができます。

$str = 'RC9999999999A202'; 

if (preg_match('/([A-Z]{2})(\d{10})\D*(\d*)/', $str, $m)) { 
    unset($m[0]); // delete full match from array 
    print_r($m); 
} 

出力:

Array 
(
    [1] => RC 
    [2] => 9999999999 
    [3] => 202 
) 

RegEx Demo

+0

@AmlanDutta:これはうまくいきましたか? – anubhava

関連する問題