電子書籍の厳選無料作品が豊富!

よろしくお願いいたします。
色々悩んだのですが…いい方法が見つかりません。

例えば
$foo = "テストの文字列テストの文字列テストの文字列テストの文字列テストの文字列(改行)テストの文字列テストの文字列テストの文字列テストの文字列テストの文字列(改行)テストの文字列テストの文字列テストの文字列テストの文字列テストの文字列(改行)テストの文字列テストの文字列テストの文字列テストの文字列テストの文字列(改行)";
という文字列 $foo があるとします。
(改行)の部分は改行コード \n が入っているとします。
この時、文字列を(例えば)文意の切れる改行で区切って切り出そうとするとどんな方法があるのでしょうか?

普通の文字列であれば
$bar = substr( $foo, 0, str_pos( $foo, "検索文字列", オフセット値 ) );
のような形で切り出せると思うのですが、
この検索文字列を改行コード \n で行いたいのですが…。

A 回答 (2件)

ちなみに



$bar = substr( $foo, 0, str_pos( $foo, "検索文字列", オフセット値 ) );

普通にここに

$bar = substr( $foo, 0, str_pos( $foo, "\n", オフセット値 ) );

と「\n」を入力してあげれば改行コードとして展開されます。


【シングルクオート内】

\\ … 「\」自体

【ダブルクオート内】

\\ … 「\」自体
\s … 半角スペース
\r … 改行コード「CR」
\n … 改行コード「LF」
\f … 改ページ
\v … 垂直タブ
\x○○ … バイト表現(○○には16進値が入る)


ちなみに改行を表す定数として

PHP_EOL

も用意されています。これが「LF」になるか「CRLF」になるかは環境に依存します。

この回答への補足

おぉぉぉっ !!
なんとなくわかった気がします。
実は
$bar = substr( $foo, 0, str_pos( $foo, "\n", オフセット値 ) );
の部分。

実際のコードでは
$bar = mb_substr( $foo, 0, mb_str_pos( $foo, "\n", オフセット値 ) );
とマルチバイト関数を使用していたのでできていなかったようです。

これを最終的に
$bar = substr( $foo, 0, str_pos( $foo, PHP_EOL, オフセット値 ) );
とすることで解決できました。
まさにドンピシャでした !!
ありがとうございます !!

補足日時:2013/05/26 14:42
    • good
    • 0
この回答へのお礼

補足がお礼になってしまいました…。

迅速なご回答本当にありがとうございました !!
大変助かりました !!

お礼日時:2013/05/26 14:44

改行で分割して配列化したいなら



$arr = explode("\n", $foo);

PHPの配列関数はすごく充実してるのでマニュアルに一度は目を通してください。
http://php.net/manual/ja/ref.array.php

よりよいコーディングのために
http://note.chiebukuro.yahoo.co.jp/detail/n149597

この回答への補足

ご回答ありがとうございます。
もちろん explode は知っています。
今回は配列として取り出したいのではなく文字列として取り出したいのです。
一度配列として取り出した上で任意の不可視の文字列で結合し、
カウントして切り出してもよかったのですが
もう少しすっきりやる方法はないかと思い質問しました。

補足日時:2013/05/26 14:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!