-2
文字を読みながらPHPで空行とendoflineを区別する方法を教えてください。要するに、charでcharを読んでいる間に空行を見つける方法を知りたい。コメントが不明な点があれば教えてください。 ありがとうございました...PHPで文字がcharで読み込まれているかどうかを調べるには
文字を読みながらPHPで空行とendoflineを区別する方法を教えてください。要するに、charでcharを読んでいる間に空行を見つける方法を知りたい。コメントが不明な点があれば教えてください。 ありがとうございました...PHPで文字がcharで読み込まれているかどうかを調べるには
現在の行の文字をバッファに収集し、行の終わりが表示されたらカウントします。
$buffer = '';
while (($char = fgetc($fp)) !== false) {
if ($char != '\n') {
$buffer .= $char;
} else {
if (strlen($buffer) == 0) {
echo "Empty line\n";
} else {
echo "Non-empty line\n";
}
$buffer = '';
}
}
それともあなたが読んでいる間、あなたがライン
$count = 0;
while (($char = fgetc($fp)) !== false) {
if ($char != '\n') {
++$count;
} else {
if ($count == 0) {
echo "Empty line\n";
} else {
echo "Non-empty line\n";
}
$count = 0;
}
}
の終わりを見るまで、あなたが見ることができるように、両方のバージョンが似ている、それだけであなたが必要とするかどうかによって異なり、文字のカウントを保持その後の行かどうか。
\r
を検討するあなたがすぐに\n
前に1を見たとき、あなたは、例えば、補正することができます
$cr = false;
$count = 0;
while (($char = fgetc($fp)) !== false) {
if ($char != '\n') {
$cr = false;
++$count;
if ($char == "\r")
$cr = true;
} else {
if ($cr)
--$count;
if ($count == 0) {
echo "Empty line\n";
} else {
echo "Non-empty line\n";
}
$count = 0;
}
}
$cr
前の文字が\r
た場合は、真です。したがって、改行を参照して$cr
が真である場合は、CRLF
があり、文字数を1減らします。
尋ねていないにもかかわらず、全体のラインと検査を読むことなど、より効率的であるかもしれない別の方法として、あなたは全体のラインを収集することができますし、長さ
if (strlen(trim($buffer)) == 0) {
echo "Empty line\n";
} else {
echo "Non-empty line\n";
}
を見る前に空白をトリム
while (($buffer = fgets($fp)) !== false) {
if (strlen(rtrim($buffer, "\n")) == 0) {
echo "Empty line\n";
} else {
echo "Non-empty line\n";
}
}
こんにちは、@Olaf Dietscheありがとう...私が遭遇した問題は、すべての行が、それは\ rをする\ nまたはシングル\ nの形であることかどうか最後に\ n個のcharを持っていることです。したがって、fgetc()が十分でないうちに\ nを検索します。ですから、各行には空白行と行末を区別することができません。あなたは私のドラフトに従えますか?よろしく – Otag
私の解決策もうまくいかないことがわかりました。だから私はまだ答えを待っている。よろしくお願いしますOtag – Otag
こんにちは@Olaf Dietsche。私はチェックし、正しいアンサーマークであなたに知らせます。ありがとうございます... – Otag