私はこれに少し取り組んできましたが、私の正規表現は弱いです。
数値が整数(1桁)であるかどうかを確認し、整数である場合はそれに「.001」を追加する必要があります。問題は、値がコンマで区切られた行の途中にあることです。
MATERIALS、1,1,9999; 1 4PL1 PB_Mel ,, 1,6,0.173,0.173,0.375,0,0.375,0,0,0,0,2,0,1,1
する必要があります
MATERIALS、1,1,9999; 1 4PL1 PB_Mel ,, 1.001、6,0.173,0.173,0.375,0,0.375,0,0,0,0,2,0,1,1
- 行は「MATERIALS」で始まる必要があります。
- 複数のMATERIALS行があります。
- 値は常に5つのコンマの後になります。
私はこのような番号を置き換えることさえ試みていましたが、アプローチは完全に正しいとは思いません:
$stripped = preg_replace('/(MATERIALS)(,.*?){4}(,\d+?),/', '\2,', $stripped);
少なくとも条件付きで機能させるために、> ifプロセスのpreg_match_all>を実行しようとしましたが、それでも行を置き換える必要があります。
preg_match_all
編集:ループを進めた行を忘れました。
preg_match_all('/MATERIALS.*/', $stripped, $materialsLines);
for($i=0;$i<sizeof($materialsLines[0]);$i++) {
$section = explode(",",$materialsLines[0][$i]);
if (strlen($section[5]) == 1) {
$section[5] .= ".001";
}
$materialsLines[0][$i] = implode(",",$section);
}