-1

私が制御できない文字列からいくつかの部分文字列を引き出す方法を見つけようとしています。文字列には、必要な 3 つの情報が含まれています。彼らです:

Order #
Middle Digits
CV2 Number

これらの各情報は可変長です。たとえば、次の文字列では、注文番号は 2 ですが、20、200、20174 などの可能性があります。中間の数字は 8 つの数字または 2 つの数字などであり、CV2 の数字は 3 つ、2 つ、または 1 つの数字である可能性があります...

Here are the middle digits of the card number for order #2:

Middle Digits: 11111111

And here is the CV2 number:

CV2 Number: 444

上記の文字列の例では、注文番号 (2)、中央の数字 (11111111)、および CV2 番号 (444) を取得する必要があります。これらの数値は任意の長さであるか、まったく存在しない可能性があります。

これらの値を確実に取得するのに役立つ PHP 関数/ロジックは何ですか? 必要な情報は数字だけです。

ありがとうございました!

4

3 に答える 3

1

テキストのパターンを一致させるために、PHP のpreg_match()をPCRE 正規表現構文と組み合わせて調べることをお勧めします。

PCRE 正規表現構文は、パターンのマッチングに非常に役立ちます。これらの番号は、次のようなパターンを実装することで取得できます: (注文番号 NNNN の場合)、(中間桁: NNNN)、(CV2 番号: NNNN) NNNN が一致するテキストになります。

編集

たとえば、注文番号を一致させるには、次のようにします。

preg_match('/order #([0-9]+)/', $str, $matches);

次に$matches[1]、一致した注文番号が含まれている必要があります。

于 2013-03-10T06:41:06.103 に答える
0
The explode() function breaks a string into an array.
explode(separator,string,limit);

例:

$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));

上記のコードの出力は次のようになります。

Array
(
    [0] => Hello
    [1] => world.
    [2] => It's
    [3] => a
    [4] => beautiful
    [5] => day.
)
于 2013-03-10T06:32:56.727 に答える
-1

使用するには2つの考え方が必要です:

1)substr()ここで詳細を読むことができます!

 string substr ( string $string , int $start [, int $length ] )

start パラメータと length パラメータで指定された文字列の部分を返します。

2)strpos() 詳細はこちら!

 int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

干し草の山文字列で最初に出現する針の数値位置を見つけます。

haystack - 検索する文字列。

needle -needle が文字列でない場合は、整数に変換され、文字の序数値として適用されます。

offset - 指定した場合、文字列の先頭から数えたこの文字数で検索が開始されます。strrpos() および strripos() とは異なり、オフセットを負にすることはできません。

あなたが見る必要があるキーのように必要な値の前にキーワードを見つける必要があります"CV2 Number: 444"位置はCV2 Number:、substr()を使用して取得した値です444

または、次を使用して、php で Reg_exp を使用できます。

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

pattern で指定された正規表現に一致するサブジェクトを検索します。

この例では

<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>

生産します

Array
(
    [0] => Array
        (
            [0] => def
            [1] => 0
        )

)
于 2013-03-10T06:39:41.733 に答える