1

私はこのtxtファイル構造を持っています:

"data";"data";"data";#;"my data";"my data";"my data"
"data";"data";"data";#;"my data";"my data";"my data"
"data";"data";"data";#;"my data";"my data";"my data"

# 記号の直後にこのファイル データを読み取る必要があります。行全体を読むためだけの私のPHPコード。

$file_handle = fopen("texto.txt", "r");
$numlinha = 0;
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   $numlinha++;
   echo $numlinha . ". " . $line . "</br></br>";
}
fclose($file_handle);
4

4 に答える 4

1

strpos関数を使用して、行の最初の # 文字の位置を見つけることができます。

$file_handle = fopen("texto.txt", "r");
$numlinha = 0;
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   $cpos = strpos($line, '#');
   if ($cpos !== FALSE) {
       $line = substr($line, 0, $cpos);
   }
   $numlinha++;
   echo $numlinha . ". " . $line . "</br></br>";
}
fclose($file_handle);
于 2011-06-20T15:19:50.160 に答える
1

分解機能を使用して、「#」区切り文字を使用して文字列を 2 つの部分に分割できます。

http://php.net/function.explode

于 2011-06-20T15:24:08.670 に答える
1
$file_handle = fopen("texto.txt", "r");
$numlinha = 0;
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   $parts = explode("#", $line);
   $parts[0] // part before the # in this line
   $parts[1] // part behind the # in this line
   $numlinha++;
   echo $numlinha . ". " . $line . "</br></br>";
}
fclose($file_handle);
于 2011-06-20T15:20:03.850 に答える
1

次を使用できます: $data = expand(";#;", $line); そして、$line の代わりに $data[1] で処理を行います。

これは、;#; を前提としています。は各行で一意です...

文字列の位置テスト (strpos()) と substr() を使用して文字列の一部を抽出すると、既に読んだ行を取得して正確な既知の区切り文字で分割するよりも、より多くのリソースを消費することに注意してください。このケースは ;#; です。

投稿された他の例では、# が行に 1 回だけあるか、または少なくとも分割が行の最初の # になることを前提としています。;#; の使用 他の用途のために結果を値の配列に分解する必要がある場合は、結果を str_getcsv() 関数で処理できます。

于 2011-06-20T15:22:59.570 に答える