質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.03%

  • PHP

    17722questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

テキストの最初の空行の位置を知りたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 148

next1ka2u

score 2

テキストにある最初の改行コードのみ(空行)の位置を取得したいのですが自分で書いたコードで合ってるかどうかが知りたいです。もしくは他に方法があればご教授お願い致します。

// $blank = '/^\r$/m';//CRコード
// $blank = '/^\n$/m';//LFコード
$blank = '/^\r\n$/m';//CRLFコード

preg_match($blank, $html_buf, $crlf, PREG_OFFSET_CAPTURE);

var_dump($crlf);
echo $crlf[0][1] + 1;// 初めの空行の次の行を指定

3行目までで各それぞれの改行コード(CR、LF、CRLF)のどれかをm修飾子付きで正規表現を指定します。
5行目でpreg_matchによる位置判定を行い、$crlfへ配列として代入します。
7行目でvar_dumpして中身がなければarray()がemptyの状態。数値が返ってくればarray[0][0]に空文字のみ、array[0][1]に見つかった位置の数値が返ってくるようになっています。
8行目でechoによる出力でemptyであればエラー、数値が入っていればarray[0][1]に+1した数値が出力されるようにしています。

この調べ方で合っているか、もしくは他に方法があればご教授下さい。
宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

<?PHP
$html_buf=<<<eof
test
test
test


test
test
test
eof;

$pattern="/(?:\r\n|\r|\n){2}/s";
preg_match($pattern, $html_buf, $crlf, PREG_OFFSET_CAPTURE);

var_dump($crlf);

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/08 22:16

    ご回答有難う御座います。
    行頭から行末までが改行コードのみの行の位置を知りたいのでs修飾子だと最初に出てきた文字を含んだ改行を見つけてしまうのでちょっとやりたいことが違います。
    ですが、改行コードの正規表現を1つにまとめるのは目から鱗でした。
    とても勉強になりました。有難う御座います。

    キャンセル

checkベストアンサー

+2

普通は、$blank = '/^$/m';ですね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/08 22:05

    ご回答有難う御座います。
    改行コードのみの空行を見つけたいのでその正規表現だと引っかからないようです。

    キャンセル

  • 2017/11/09 02:16

    引っかかりますよ。勘違いでは?
    改行コードのみの空行の、改行の直前にマッチします。

    キャンセル

  • 2017/11/09 15:55

    コメント有難う御座います。
    WEBメーラーのGmailでメールデータをテキストにダウンロードして空行を判定しておりますが引っかからなかったです。小生の環境はwindows10でメールデータのダウンロード後に編集を加えたりはしてないものをテストデータとして扱っておりますがやはり引っかかりません。

    キャンセル

  • 2017/11/09 17:21

    とすると、改行コードがあってないのでしょうね。

    キャンセル

  • 2017/11/09 19:02

    お手数お掛け致します。再々のコメント有難う御座います。
    WEBメーラーのGmailでメールデータをダウンロードしているのが原因でしょうか?主にメールデータの解析の為のコードを書いています。確かにLF単体では引っかからないので何か特異な状態で保存されているのかもしれません。CR単体、CRLFだと引っかかるメーラーもあるのですが中にはCRLFすら引っかからないメーラーもありまして色々混乱しております。

    キャンセル

  • 2017/11/09 21:47

    なぜ事前にファイルの改行コードを確認しないのでしょうか?

    キャンセル

  • 2017/11/09 22:45

    コメント有難う御座います。
    事前に改行コードを確認する術が解りません。どのような方法で確認できるのでしょうか?
    宜しければ今後の為にもご教授頂ければ非常に有難いのですが、初学者でも簡単でしょうか?
    WEBメーラーのGmailでテキストデータとして保存した上で改行コードがあるかどうかを
    調べるという方法しか思いつきませんでした。何卒、ご指導お願い致します。

    キャンセル

  • 2017/11/09 23:32

    GUIで出来る簡単な方法としては、複数の改行コードを扱えるエディタで開いてみると言うことですね。
    私は、Terapadというエディタを使っています。ファイルを開くと、漢字コードと改行コードが最下部に表示されます。

    キャンセル

  • 2017/11/09 23:44

    お力添え、誠に有難う御座います。
    非常に勉強になりました。沢山の補足コメントを頂けましたのでベストアンサーにさせて戴きました。またどこかで見かけましたらご指導お願い致します。

    有難う御座いました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    17722questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。