次のような数字を含むテキストファイルがあります。
12345678901234567890
123456789012345678901
123456789012345678902
1234567890123456789012
1234567890123456789023
12345678901234567890123
12345678901234567890234
このファイルを 1 行ずつ読み取るスクリプトを作成しました。バイト数だけでなく、行内の文字数を数え、21 文字または 22 文字を含む行のみを選択したいと考えています。
以下のスクリプトを使用すると機能します。23 と言ったのに、なぜ 21 文字を読み取ったのか聞かないでくださいstrlen
。バイトしか取得できなかったので、ファイルのエンコードに関係していると思います。
長さが 21 文字または 22 文字の行を選択したら、行を分割する必要があります。21なら2文字列(15文字列と6文字列)、22文字なら16文字列と6文字列に分割する必要があります。
配列にしてみましたが、配列は次のようになります。
Array ( [0] => 123456789012345 [1] => 678901 ) Array ( [0] => 123456789012345 [1] => 678903 )
代わりに次のように表示したい:
123456789012345=678901
123456789012345=678903
配列からエコーする方法はありますか?
$filename = "file.txt";
$fp = fopen($filename, "r") or die("Couldn't open $filename");
while (!feof($fp)){
$line = fgets($fp);
$str = strlen($line);
if($str == 23){
$str1=str_split($line, 15);
print_r($str1);
foreach ($str1 as $value)
{
echo $value . "=" ;
}
}
if($str == 24){
$str1=str_split($line, 16);
foreach ($str1 as $value)
{
echo $value . "=" ;
}
}
}