私はこのような文字列の形式を持っています:
1PR009427S0000754
まず、このフォーマットについて説明します。製品の部品番号の先頭を意味する「1P」が表示されている場合。製品のシリアルナンバーを表す「S」から始まります。この形式の文字列を使用すると、この種の文字列形式に遭遇するまでは、問題なく 1 つの文字列を 2 つに分割または分解できます。
1P0005-00118-33S3S216
1PS-35C-602S6510873143
1P0005-00115-SPS3S216
これらの新しいフォーマットでは、1 つの文字列に 2 つの「S」が含まれていることに気付いた場合、問題は、文字列を爆発させるときに、1Pを使用して、それが部品番号の開始であることをプログラムに伝え、すぐに製品のシリアル番号の先頭である「S」が表示されます。私の懸念は、新しい弦を爆発させているときに、弦にいくつかの S が表示されるために、間違った部品番号とシリアル番号の結果が得られることです。
ここに私のプログラムのサンプルがあります
if($_POST['submit'])
{
$text = explode("<br />",nl2br($_POST['pn']));
foreach ($text as $key => $value)
{ //start foreach statements
$precage = "0617V";
$presym = "[)>";
$partn = "1P";
$serial = "S";
$match = preg_match('/[)>0617V1PS]/', $value);
if($match == true)
{
$value2 = substr($value[1], 5);
$result = explode("1P", $value2);
$fin_pnresult = explode("S", $result[1]) ;
$serial1 = strrchr($value2, $serial);
$fin_serial = substr($serial1, 1);
$cageresult = substr($value2, 0, strpos($value2, "1P"));
}
}
?>
助けてくれてありがとう。