如何在行中拉入的值的前 9 位數字和后 2 位數字之間添加小數點: $matchesLine[$key] = substr($line,166,11);?因為,獲取的值不包含小數點。
樣本資料
輸入: 00023659819
期望的輸出: #########.## >> 00236598.19
@Shlomtzion 提供的腳本
<?php
$text = "I0023540987805R01 ABC GHI OLirrt 000000000000000100EA 0812160070451700 1098833 1990041300000001086000000000108600000000000996000000000032100000000000000000000000000000000000000000000000000000000000000000000006589000000000000000 P0012B
0000002032902R01 DEF JKL KLijuI 000000000000000100EA 0812160070451700 1029132 1997010800000002396000000000239600000120002326000000000000000000000000000000000000000000000000000000000000004560000000000000000000000000987600000000 A203SD ";
echo '<pre>';
$txt = explode("\n",$text);
echo '<pre>';
print_r($txt);
foreach($txt as $key => $line){
$subbedString = substr($line,2,11);
$searchfor = '02354098780';
//echo strpos($subbedString,$searchfor);
if(strpos($subbedString,$searchfor) === 0){
$matches[$key] = $searchfor;
$matchesLine[$key] = substr($line,166,11);
echo "Found in line : $key";
}
}
echo '<pre>';
print_r($matches);
echo '<pre>';
print_r($matchesLine);
uj5u.com熱心網友回復:
這是通過的一種方法preg_replace:
$input = "00023659819";
$output = preg_replace("/(?=\d{2}$)/", ".", $input);
echo $output; // 000236598.19
uj5u.com熱心網友回復:
如果您已經知道有 11 位數字,則可以使用substr_replace
$str = "00023659819";
echo substr_replace($str, ".", 9, 0);
輸出
000236598.19
如果你想在 11 位數字時進行替換,你可以使用preg_replace和 2 個捕獲組來表示 9 和 2 位數字,并在替換中使用 2 個捕獲組,中間有一個點$1.$2
$str = "00023659819";
echo preg_replace("/^(\d{9})(\d{2})$/", "$1.$2", $str);
輸出
000236598.19
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377517.html
