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

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

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

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

Q&A

解決済

2回答

471閲覧

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

next1ka2u

総合スコア8

PHP

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

0グッド

0クリップ

投稿2017/11/08 10:01

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

php

1// $blank = '/^\r$/m';//CRコード 2// $blank = '/^\n$/m';//LFコード 3$blank = '/^\r\n$/m';//CRLFコード 4 5preg_match($blank, $html_buf, $crlf, PREG_OFFSET_CAPTURE); 6 7var_dump($crlf); 8echo $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した数値が出力されるようにしています。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんなかんじでしょうか?

php

1$html_buf=<<<eof 2test 3test 4test 5 6 7test 8test 9test 10eof; 11 12$pattern="/(?:\r\n|\r|\n){2}/s"; 13preg_match($pattern, $html_buf, $crlf, PREG_OFFSET_CAPTURE); 14 15var_dump($crlf);

投稿2017/11/08 10:27

yambejp

総合スコア114736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

next1ka2u

2017/11/08 13:16

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

0

ベストアンサー

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

投稿2017/11/08 10:35

otn

総合スコア84487

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

next1ka2u

2017/11/08 13:05

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

2017/11/08 17:16

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

2017/11/09 06:55

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

2017/11/09 08:21

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

2017/11/09 10:02

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

2017/11/09 12:47

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

2017/11/09 13:45

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

2017/11/09 14:32

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

2017/11/09 14:44

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問