PHP 5.3 には、私がやりたいと思われる素敵な関数があります。
strstr(input,"\n",true)
残念ながら、サーバーは PHP 5.2.17 を実行しており、オプションの 3 番目のパラメーターstrstr
は使用できません。以前のバージョンでこれを1行で達成する方法はありますか?
PHP 5.3 には、私がやりたいと思われる素敵な関数があります。
strstr(input,"\n",true)
残念ながら、サーバーは PHP 5.2.17 を実行しており、オプションの 3 番目のパラメーターstrstr
は使用できません。以前のバージョンでこれを1行で達成する方法はありますか?
行が 1 文字 ("\n") または 2 文字 ("\r\n") で区切られる場合、最も確実な方法は次のとおりです。
$line = preg_split('#\r?\n#', $input, 0)[0];
空の文字列であっても、最初の改行の前の任意のシーケンスに対して、および
$line = preg_split('#\r?\n#', ltrim($input), 0)[0];
最初の空でない文字列。
この回答が最初に書かれたとき、ほぼ 10 年前に、いくつかの微妙なニュアンスが特徴でした。
PHP_EOL
ローカルシステム設定の影響を受けずに外部データを処理できるため、使用は解決策ではありませんexplode()
またはを 1 行で使用する方法がなかったため、 を使用preg_split()
したトリックstrtok()
が提案されました。しかし、その直後、Nikita Popovによって提案されたUniform Variable Syntaxのおかげで、これらの関数の 1 つをきちんとしたワンライナーで使用できるようになりました。しかし、この質問がある程度人気を博したため、回答で考えられるすべてのエッジ ケースをカバーすることが不可欠です。しかし、歴史的な理由から、ここに元の答えがあります
$str = strtok($input, "\n");
UNIX形式のテキストから最初の空でない行を返します。
ただし、C の元の strtok() 関数のマニュアル ページに記載されているように、strtok()
「文字列の先頭または末尾の区切り文字は無視される」ため、行区切り記号が異なる可能性があり、の動作はそれほど単純ではありません。 、この機能は慎重に使用することをお勧めします。
遅くなりましたが、爆発を使用できます。
<?php
$lines=explode("\n", $string);
echo $lines['0'];
?>
$first_line = substr($fulltext, 0, strpos($fulltext, "\n"));
またはそのあたりの何かがうまくいくでしょう。醜いが、実行可能。
試す
substr( input, 0, strpos( input, "\n" ) )
echo str_replace(strstr($input, '\n'),'',$input);
list($line_1, $remaining) = explode("\n", $input, 2);
操作を繰り返したい場合に、一番上の行と取り残されたコンテンツを簡単に取得できます。それ以外の場合は、提案どおりに substr を使用してください。
これを試して:
substr($text, 0, strpos($text, chr(10))
strpos
と組み合わせてお使いいただけますsubstr
。最初に文字が配置されている位置を見つけてから、文字列のその部分を返します。
$pos = strpos(input, "\n");
if ($pos !== false) {
echo substr($input, 0, $pos);
} else {
echo 'String not found';
}
これは、あなたの望むことですか ?
le 1 行の制限に気付かなかったので、このままでは適用されません。他の人が提案したように、2 つの関数を 1 行で組み合わせることができます。また、必要に応じて、1 行のコードで呼び出されるカスタム関数を作成することもできます。あなたの選択。