-2

私は文字列を持っています

 $str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"

この文字列を数字で分割したい、例えば: "101WE3P-1An...." を最初の要素、"104TUA..." を 2 番目の要素にする必要がありますか?

誰かが私の前の質問preg_match で次のコードを書いて、3 つの数字の部分文字列を連続して一致させましたか? 数分前:

$result = preg_split('/^\d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

ベースラインは、3 桁の数字の後に大文字が続き、その後に \t を含む何かが続くものと一致させたいですか? 前もって感謝します。

4

2 に答える 2

5

先読みアサーションpreg_split()を使用すると、文字列の任意の時点で分割し、その後に3桁の数字が続くように指示できます。

$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01";
$result = preg_split('/(?=\d{3})/', $str, -1, PREG_SPLIT_NO_EMPTY);

var_export($result);

次の配列を与えます:

array (
  0 => '101WE3P-1An Electrically-Small',
  1 => '104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01',
)

文字列のPREG_SPLIT_NO_EMPTY先頭も3桁のポイントであるため、フラグが使用されます。したがって、ここでは空の分割が発生します。文字列の最初で分割されないように正規表現を変更することもできますが、フラグが非常に明確であるのに対し、一目で理解するのは少し難しくなります。

于 2012-12-31T13:46:30.313 に答える
-1

分割するのではなく、一致させてみました

preg_match_all('/^(\d{3}.*?)*$/', $str, $matches);
var_dump($matches);

サンプルに対して正しい結果が得られるようです

于 2012-12-31T13:48:29.877 に答える