• ベストアンサー

WordPressの質問(q10207678)の続

空白改行の文字が連続してはいけないという条件で正規表現を調べたところ、空白には色々な表現があるようでそれらを 1 つ 1 つ調べ上げるのは面倒なので、Unicode 文字プロパティを使ったほうがよいと参考サイトに書かれておりました。 マルチバイト対応の文字列に対する正規表現マッチングで作成するのが良いみたいですが、コードを調べても意味が分からずどうすれば良いか迷っております… 正規表現を使っている場合 ReDoS という攻撃があるようで、セキュリティ上の対策も必要なようです。 アドバイスお願い致します。 ※参考サイト https://qiita.com/fallout/items/a13cebb07015d421fde3

  • PHP
  • 回答数32
  • ありがとう数35

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.32

・カメラ画像をファイルアップロード時に非表示にするコードを追加するコードを考えてみたのですが、間違っているところはありますでしょうか? 実装してみました。 カメラ画像は非表示になったのでいいと思います。

php_learn
質問者

お礼

こちらが最新の質問になります。 質問の期限が切れており続きの質問を立てさせていただきました。アドバイスよろしくお願い致します。 https://okwave.jp/qa/q10226736.html

php_learn
質問者

補足

回答ありがとうございます。 CSSを確認ページまで設定して確認後に表示ページのコードを作成する予定です。

その他の回答 (31)

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.31

・画面還移ありの掲示板の際に設定していた HTML クラスを追加したところ非同期通信に失敗してしまい確認画面に切り替わらず悩んでおります… 原因は分かりますでしょうか? 非同期通信には失敗していません。 原因はdivタグがなくなったために正しく表示されなくなったのです。 pタグは追加するようにお願いしました。 divタグをpタグに変更ではありません。 ---- div = document.createElement("div"); child = document.createElement("p"); child.appendChild(document.createTextNode("名前:" + namae_value)); ----

php_learn
質問者

補足

A.回答ありがとうございます。 勘違いしておりました。申し訳ありません修正いたしました。 ※最新コード https://wandbox.org/permlink/2vH15Es2AdKpj4sk _________________________ カメラ画像をファイルアップロード時に非表示にするコードを追加するコードを考えてみたのですが、間違っているところはありますでしょうか? まるまるコピーせずに旧コードと新コードを組み合わせてみました。 bbs_quest_input.php が旧コード、sin_bbs_quest_input.php が現在のコード、sample.php が複合させて考えたコードになります。 ※該当コード https://wandbox.org/permlink/syCgajyPo0NwTEoI ※画面還移あり掲示板 https://wandbox.org/permlink/cfzsJgBFcYrcIDI1

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.30

・functions.php 右側に追加されている掲示板承認のコードは必要になるのでしょうか? 管理者画面にメニューを表示して機能を追加するコードです。 今のところ無視してください。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.29

・1.confirm_area の子要素として <h2> があるのはなぜでしょうか? それは「確認画面」を表示するためのタグです。 ・2.<h2></h2> の前後についている <div></div> はどの Javascript コードから付与されているのでしょうか? そのdivは名前とコメントのそれぞれの枠ですが、階層のあやまりで<div></div>となったです。 回答No.28で階層がおかしくならないようpタグを追加したものでは問題なく、以下のように出力されます。 ※画像があるとわかりにくくなるので、画像なしで確認画面に進んだものです。 ~~~~ <div id="confirm_area" style="display: block;"> <h2>確認画面</h2> <div> <p>名前:なまえ</p> </div> <div> <p>コメント:こめんと</p> </div> <div><input type="radio" name="stamp" id="confirm_stamp" value="1"><label for="confirm_stamp"></label></div> <div></div> <div><button type="button">入力画面へ戻る</button><button type="button" name="sample1">結果画面へ進む</button></div> </div> ~~~~ ・3.スタンプが2番目に表示されているのですが、~ .appendChild は後述したコードから先に出力されるのでしょうか? 2番目の意味がわかりませんが、pタグの生成がないことがすべての原因です。 ところで私のサンプルサイトにはアクセスできたのですね。 添付されたHTMLはいつのものかわかりませんが、pタグを追加した版でもう一度確認してみてください。

php_learn
質問者

補足

Q.それは「確認画面」を表示するためのタグです。 A.回答ありがとうございます、理解出来ました。 Q.そのdivは名前とコメントのそれぞれの枠ですが、階層のあやまりで<div></div>となったです。 回答No.28で階層がおかしくならないようpタグを追加したものでは問題なく、以下のように出力されます。 ※画像があるとわかりにくくなるので、画像なしで確認画面に進んだものです。 A.解説ありがとうございます。修正いたしました。 https://wandbox.org/permlink/ker8utI0DuOs9M9X Q.ところで私のサンプルサイトにはアクセスできたのですね。 添付されたHTMLはいつのものかわかりませんが、pタグを追加した版でもう一度確認してみてください。 A.回答ありがとうございます、サンプルサイトにアクセス出来ました。 dell_okさんに頂いたコードから不明なコードがあるのですが、 functions.php 右側に追加されている掲示板承認のコードは必要になるのでしょうか? ※コード比較 https://difff.jp/gjv9n.html 画面還移ありの掲示板の際に設定していた HTML クラスを追加したところ非同期通信に失敗してしまい確認画面に切り替わらず悩んでおります… 原因は分かりますでしょうか? ※最新コード https://wandbox.org/permlink/ker8utI0DuOs9M9X ※質問掲示板 https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.28

・構造を理解するためにフロートチャートを作っているのですが途中で分からないところが多数出てきており フローチャートを見ました。 どんどん階層の中へ追加されていますね。 原因は、コードが戻っているか、お願いしたことが反映されていないためです。 質問者さまが、確認画面に表示する名前やコメントをpタグにしたい、と言われていたことです。 確認画面と結果画面の両方にあるので、pタグを作るコードを追加しておいてください。 ---- child = document.createElement("p"); child.appendChild(document.createTextNode("名前:" + namae_value)); 省略 child = document.createElement("p"); child.appendChild(document.createTextNode("コメント:" + message_value)); ----

php_learn
質問者

補足

修正ありがとうございます。 コードについて改めて考えてみたのですがどうしても分からない点があり dell_ok さんに教えて頂きたいです。 サンプルサイトから確認画面をデロッパツールで解析してみたところ下記のように表示されました。 ※確認画面HTML <div id="confirm_area" style="display: block;"><div></div><div><h2>確認画面名前:名前テストコメント:コメントテスト</h2></div><div><input type="radio" name="stamp" id="confirm_stamp" value="1"><label for="confirm_stamp"></label></div><div><img src="blob:http://oksample.starfree.jp/624a1f30-d826-4a68-af5e-53279219a1ea" style="max-height: 200px; max-width: 200px;"><img src="blob:http://oksample.starfree.jp/6c1bf17e-bdd3-44b6-bb84-3e64d91fcfa8" style="max-height: 200px; max-width: 200px;"><img src="blob:http://oksample.starfree.jp/c4689b70-b8e5-4929-9971-f483017d1a72" style="max-height: 200px; max-width: 200px;"></div><div><button type="button">入力画面へ戻る</button><button type="button" name="sample1">結果画面へ進む</button></div></div> <div></div> <div><h2>確認画面名前:名前テストコメント:コメントテスト</h2></div> <div><input type="radio" name="stamp" id="confirm_stamp" value="1"><label for="confirm_stamp"></label></div> <div><img src="blob:http://oksample.starfree.jp/624a1f30-d826-4a68-af5e-53279219a1ea" style="max-height: 200px; max-width: 200px;"><img src="blob:http://oksample.starfree.jp/6c1bf17e-bdd3-44b6-bb84-3e64d91fcfa8" style="max-height: 200px; max-width: 200px;"><img src="blob:http://oksample.starfree.jp/c4689b70-b8e5-4929-9971-f483017d1a72" style="max-height: 200px; max-width: 200px;"></div> <div><button type="button">入力画面へ戻る</button><button type="button" name="sample1">結果画面へ進む</button></div> <div id="confirm_area" style="display: block;"><div></div><div><h2>確認画面名前:名前テストコメント:コメントテスト</h2></div><div><input type="radio" name="stamp" id="confirm_stamp" value="1"><label for="confirm_stamp"></label></div><div><img src="blob:http://oksample.starfree.jp/624a1f30-d826-4a68-af5e-53279219a1ea" style="max-height: 200px; max-width: 200px;"><img src="blob:http://oksample.starfree.jp/6c1bf17e-bdd3-44b6-bb84-3e64d91fcfa8" style="max-height: 200px; max-width: 200px;"><img src="blob:http://oksample.starfree.jp/c4689b70-b8e5-4929-9971-f483017d1a72" style="max-height: 200px; max-width: 200px;"></div><div><button type="button">入力画面へ戻る</button><button type="button" name="sample1">結果画面へ進む</button></div></div> ※お聞きしたい質問 1.confirm_area の子要素として <h2> があるのはなぜでしょうか?Javascriptでは child = となっているため confirm_area の子要素として表示されているのが不思議です。 confirm_area.textContent = ''; var div; var child; child = document.createElement("h2"); ※該当コード <div id="confirm_area" style="display: block;"><h2>確認画面名前:名前テストコメント:コメントテスト</h2> 2.<h2></h2> の前後についている <div></div> はどの Javascript コードから付与されているのでしょうか?SEOを考える場合必要ないものだと考えております。 <div></div><div><h2>略</h2></div><div> ※該当コード <div></div><div><h2>確認画面名前:名前テストコメント:コメントテスト</h2></div><div> 3.スタンプが2番目に表示されているのですが、Javascript では確認画面の下に名前に関するコードが書かれているため勘違いしていたようです… .appendChild は後述したコードから先に出力されるのでしょうか? confirm_area.appendChild(child);// confirm_area の末尾に child を追加 div = document.createElement("div"); child.appendChild(document.createTextNode("名前:" + namae_value)); ※該当コード <input type="radio" name="stamp" id="confirm_stamp" value="1">

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.27

・〇〇.appendChild(××) は「要素〇〇の子要素として××を追加する」というメソッドでしょうか? そうです。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.26

・残りの文字チェックコードを考えてみたのですが、/* 最小チェック */と/* 最大チェック */から計算しているのではないかと思い、現在の文字列チェックコードはすべて書き換える必要があるように感じました。 抜き出されているところでよさそうです。 それを転記してください。 idが違うところがあるので手直しする必要があります。 あとは、名前とコメントのHTMLを文字数チェックに合わせてdiv階層を増やしたりclassを追加する必要もあります。 必要最低限ですが、質問者さまのsingle-input.phpをもとに、私のサンプルを直してみましたので確認してみてください。 http://oksample.starfree.jp/%E8%B3%AA%E5%95%8F%E3%81%99%E3%82%8B/ https://github.com/dell-GH/sample_theme 「確認画面へ進む」ボタンの制御が必要かどうかわかりませんが、必要であればスタンプが選択されているかどうかもチェックした方がいいと思います。

php_learn
質問者

補足

A.アドバイスありがとうございます。 サンプルサイトの URL を確認してみたのですが、下記のように表示されており表示することが出来ませんでした… 無効なURLです。 プログラム設定の反映待ちである可能性があります。 しばらく時間をおいて再度アクセスをお試しください。 構造を理解するためにフロートチャートを作っているのですが途中で分からないところが多数出てきており、コードの修正に影響が出るのではないかと考えております。 〇〇.appendChild(××) は「要素〇〇の子要素として××を追加する」というメソッドでしょうか? HTML コードを教えて頂きたいです。 ※single-index.phpの152、156行目 confirm_area.appendChild(div);// confirm_area の末尾に div を追加 confirm_area.appendChild(div);// confirm_area の末尾に div を追加 ※single-index.phpの164行目 div.appendChild(child);// div の末尾に child を追加 ※最新コード https://wandbox.org/permlink/Bwo6ztTvtfmnBK2d ※フロートチャート https://imgur.com/zZP8k2Y.jpg

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.25

また、コードがもとに戻っています。 変更しておいてください。 ---- namae_value = document.getElementById("namae").value; message_value = document.getElementById("message").value; ---- namae_value = json.namae; message_value = json.message; ----

php_learn
質問者

補足

回答ありがとうございます、申し訳ありません… 修正いたしました。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.24

・残りの文字数表示部分はこれ以上改善することが出来ず、変更をせずにそのまま移動させたいのですが、下記送信ボタン制御コードにどのように追加すればよいか分からず悩んでおります… 残りの文字数表示部分のコードがどこからどこまでかわかりますか。 まずはそれをそのまま移動してみてください。 init()の中のものはinit()の中へ、外のものは外へ。

php_learn
質問者

補足

回答ありがとうございます、残りの文字チェックコードを考えてみたのですが、/* 最小チェック */と/* 最大チェック */から計算しているのではないかと思い、現在の文字列チェックコードはすべて書き換える必要があるように感じました。 文字数のチェックはどうすれば良いでしょうか? ※文字数表示部分のコード function validation_submit(f) { const submit = document.getElementById("submit_button"); /* 判定は逆なので、逆に渡す */ submit.disabled = f ? false : true; }; function validation_text(parts) { /* このpartsグループの、inputを抽出 */ let text = parts.getElementsByClassName('input')[0]; /* 最小チェック */ if (text.value.length == 0) { return false; } /* 最大チェック */ if (text.value.length >= text.dataset.length) { return false; } return true; }; (略) /* 文字数表示 */ document.addEventListener('input', e => { if (!['name', 'message'].includes(e.target.id)) return; const t = e.target, m = t.nextElementSibling, n = t.value.length - (t.dataset.length | 0), c = document.createElement('span'); c.append(Math.abs(n)); m.style.color = n > 0 ? 'red' : 'black'; m.replaceChildren(n > 0 ? '' : '残り', c, `文字${n > 0 ? '超過してい' : '入力でき'}ます。`); /* 毎回判定によるボタン制御 */ validation(); }); /* 初回判定のボタン制御 */ validation(); }; document.addEventListener("DOMContentLoaded", init); ※最新コード https://wandbox.org/permlink/8hG7Gno9SvFYGrXP

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.23

・sin_functions.phpのコードを削除して旧コードのような形に変更することは可能だと思われますでしょうか? どのようにされたいのかがわかりませんが、 sin_functions.phpとfunctions.phpで重複する機能関数や定義は、 優先すべきものをsin_functions.phpからfunctions.phpへ上書きして、 functions.phpにないものは移動したらいいと思います。 もともとsin_functions.phpを作られた意図がわからなかったのですが、 非同期用の関数をfunctions.phpに書いていただければよかったような気もします。 そもそもどうやってsin_functions.phpを読み込んでいたのでしょうか。

php_learn
質問者

お礼

こちらが最新の質問になります。旧コード single-input.php のJavascript コードをそのまま最新コード single-index.php に合体させることは可能でしょうか? 残りの文字数表示部分はこれ以上改善することが出来ず、変更をせずにそのまま移動させたいのですが、下記送信ボタン制御コードにどのように追加すればよいか分からず悩んでおります… const init = function () { set_attach_event(); document.getElementById("input_button").addEventListener("click", input_button_click); } ※最新コード https://wandbox.org/permlink/8hG7Gno9SvFYGrXP ※旧コード https://wandbox.org/permlink/cfzsJgBFcYrcIDI1

php_learn
質問者

補足

Q.sin_functions.phpとfunctions.phpで重複する機能関数や定義は、 優先すべきものをsin_functions.phpからfunctions.phpへ上書きして、 functions.phpにないものは移動したらいいと思います。 A.回答ありがとうございます、申し訳ありませんsin_functions.phpはfunctions.phpへの追加分との比較のために書いていたので、functions.phpに戻しておきます。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.22

・カメラ画像をファイルアップロード時に非表示にするコードを現在の single-index.php から探してみたのですが見当たらず、書いていないのではないかと不安なのですが、該当するコードはありますでしょうか? そのコードはありません。 サンプルではカメラ画像の表示および切替をしていません。 以前のコードを参照して、現在のコードに反映してみてください。 まるまるコピーしてもうまくいかないかも知れませんので、 気を付けてください。

php_learn
質問者

補足

回答ありがとうございます、旧コードと見比べてみたところ恐らく名前が空だった場合のエラー表示、入力時の字数カウント、カメラ画像をファイルアップロード時に非表示にするコードの3つを追加する必要がありそうなのですが、sin_functions.phpのコードを削除して旧コードのような形に変更することは可能だと思われますでしょうか? class MAX_LENGTH { public const NAME = 50; public const MESSAGE = 500; } ※最新コード https://wandbox.org/permlink/lItJX4RPyB5Ytp9F ※旧コード https://wandbox.org/permlink/cfzsJgBFcYrcIDI1

関連するQ&A

  • WordPressの質問(q10187929)の続

    blob を使いファイルアップロード機能を考えてみたのですが、画像と動画をどのように識別させるのかが分かりませんでした。 データ URI 形式で表示する方法と、Blob URL で表示する方法の2種類があるようです。 Data URI で動画を表示する方法は対応ブラウザの関係で避けた方が良いと思っております。 アドバイスお願い致します。 ※blob.php にコードを追加いたしました。 ※最新コード https://wandbox.org/permlink/PSXWslcYugaPqtjK ※参考サイト https://mixltd.jp/blog/how_to_make_thumbnail_from_input_video/ https://lab.syncer.jp/Web/JavaScript/Snippet/17/ https://qiita.com/azu369yu/items/8998e1e1536a5acfb7b3

    • ベストアンサー
    • PHP
  • 文字列を含まないという正規表現は?

    お世話になります。 例えば、文字「a」を含まないという正規表現は、 "[^a]" となりますが、文字列「abc」を含まないという正規表現はどうなりますでしょうか? "[^abc]" ではだめでしたし、 "[^(abc)]" でもだめでした。 また、改行などの制御文字を含めたどんな文字でもいいという正規表現はどうなりますでしょうか? ".*" では改行などが含まれるときはだめでした。 どうかご教授のほどよろしくお願い致します。 次のサイトは参考にしたサイトです。 正規表現の解説 目次 http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html#mnu_top

  • WordPressの質問(q10063418)の続

    参考サイトを見てsmtp設定をPHP側で試しているのですが、メールの送信のやり方がわかりません。 テストメールをwp_mail()から送信してみるというコードをファイルに書き込んでもメールが届いていない状態です。 Hostは契約時のメール内容から、Port番号はカラフルボックスの案内から、Username、Password、From はCpanelの設定画面から確認しているのですが… 何か抜けているのでしょうか? localhost環境でも試してみようかと考えております。 ※接続ポート番号について https://help.colorfulbox.jp/manual/mail-spec-list/ ※実装コード add_action("phpmailer_init", "send_smtp_email"); function send_smtp_email( $phpmailer ) { $phpmailer->isSMTP(); $phpmailer->Host = "[mail.last.cfbx.jp]"; $phpmailer->SMTPAuth = true; $phpmailer->Port = 587; $phpmailer->SMTPSecure = "tls"; $phpmailer->Username = "[test@last.cfbx.jp]"; $phpmailer->Password = "[takuya7530]"; $phpmailer->From = "[test@last.cfbx.jp]"; $phpmailer->FromName = "[test]"; } ※テストメールをwp_mail()から送信(t******@gmail.comは確認用のメールアドレス) wp_mail( "t******@gmail.com", "届きましたか?", /// => サブジェクト(件名) "このメールが見れたなら設定は完ぺき!" /// => ボディ(メール内容) ); ※参考サイト 1,https://qiita.com/e__ri/items/857b12e73080019e00b5 2,https://fukuro-press.com/wordpress-send-email-with-smtp/

    • ベストアンサー
    • PHP
  • Perl正規表現わかりますか?

    下記のPerl正規表現ですが、どんな意味か分かるでしょうか? $var =~ s!/([^/]+|~(\.\.))/\.\./!/!g 参考書も読んでみたのですが分かりませんでした(セットされている文字列にどんなマッチング、置換をしているのでしょう) お分かりの方いれば、よろしくお願いします。

    • ベストアンサー
    • Perl
  • ヌル攻撃とはなんでしょうか?

    インターネットで「ヌル攻撃」というものがありました。 引用したサイトから、 何らかのリクエストされた文字列に%00(ヌルバイト)を含めることで、Webアプリケーション側のセキュリティーチェックをくぐり抜ける攻撃 とありました。 ファイルにアクセスする時、「300」と打つ所を間違えて「%00」と入力してしまい、 「400 Bad Request」と表示されました。 例えばこんな感じで www. 〜.com/file/%00 (誤) www. 〜.com/file/300 (正) これって大丈夫なのでしょうか? 不安です。 文字化け等は起きていません。 引用: https://qiita.com/tabo_purify/items/d7a67709f54865df891e

  • 改行も含めて検索したい

    複数のHTMLファイルのヘッダの差し替えをしたいと考えています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ~この間90行くらい~ <!-- contents --> ~コンテンツスタート~ という構造になっているのですが、間の90行はファイルによって中身が微妙に違うので正規表現でマッチングできないかと考えています。 そこで、正規表現はまったくわからないので見よう見まねで <!DOCTYPE.*<!-- contents --> <!DOCTYPE.+?<!-- contents --> など試しましたが、改行が入っているとダメみたいです。 <!DOCTYPE.*EN" <!DOCTYPE.+?EN" このように1行だけだと正常にマッチしました。 改行を含んでこの先頭の92行をマッチさせる正規表現の記述方法を教えてください。 よろしくお願いします。 (※別スレで同じ質問をしていますが、回答がつかないのでマルチポストさせて頂いております。24時間経過したらもう一つのほうを削除します。)

    • ベストアンサー
    • PHP
  • WordPressの質問(q10113307)の続

    「保存するファイル名につかってはいけない」とのことなのですが、user_add_check.phpの<input type="hidden" name="image_name" value="<?= $user_image['name'] ?>">を使う事はアウトなようです。 自分なりに参考サイトを見て考えてみたのですが、$_SESSION['image']['data']が機能しているのか分からない状態です。 自信がないため2パターン考えてみました。 ※参考サイト https://qiita.com/ryouya3948/items/66294cb445663f2a9d95 user_add.php(要らないもの?) <h2>新規登録</h2> <form method="post" action="user_add_check.php" enctype="multipart/form-data"> <input type="text" name="name" class="user_name_input" placeholder="ユーザー名"> <input type="file" name="image" id="my_image" accept="image/*" multiple> <input class="btn btn-outline-info" type="button" onclick="history.back()" value="戻る"> <input class="btn btn-outline-dark" type="submit" value="登録"> </form> user_add_check.php(入力画面) <?php session_start(); //ファイルの内容を全て文字列に読み込む $_SESSION['userfile']['data'] = file_get_contents($_FILES['userfile']['tmp_name']); //アップロードされたファイルの種類を確認--送られてくる MIME タイプは信用できない--メッセージ全体を偽装できる $_SESSION['userfile']['type'] = exif_imagetype($_FILES['userfile']['tmp_name']); $_SESSION['userfile']['type'] = mime_content_type ($_FILES['userfile']['tmp_name'] ); //画像であるかどうかをexif_imagetype()を使って判別--画像のみ分ける必要があるのか不明 //$_SESSION['userfile']['type'] = exif_imagetype($_FILES['image']['tmp_name']); ?> <img src="image.php"> <form method="post" action="user_add_done.php"> <input type="hidden" name="name" value="<?= $user_name ?>"> <input type="hidden" name="image_name" value="<?= $user_image['name'] ?>"> <input type="button" class="btn btn-outline-info modal_close" onclick="history.back()" value="戻る"> <input type="submit" class="btn btn-outline-dark" value="OK"> </form> image.php(確認画面 バイナリーデータ確認) <?php $load_name = $ext session_start(); switch ($file_ext == $_SESSION['userfile']['type']) { case IMAGETYPE_JPEG: header('content-type: image/jpeg'); break; case IMAGETYPE_PNG: header('content-type: image/png'); break; case IMAGETYPE_GIF: header('content-type: image/gif'); break; case MIME_TYPE_PDF: header('content-type: application/pdf'); break; case MIME_TYPE_MP4: header('content-type: video/mp4'); break; } ?> <?php $load_name = $ext session_start(); switch ($file_ext == $_SESSION['userfile']['type']) { //jpegを表示 case IMAGETYPE_JPEG: header('content-type: image/jpeg'); echo $_SESSION['image']['data']; break; //pngを表示 case IMAGETYPE_PNG: header('content-type: image/png'); echo $_SESSION['image']['data']; break; //pdfを表示 case MIME_TYPE_PDF: header('content-type: application/pdf'); echo( substr( $_SESSION['image']['data'], 0, 5 ) ); break; //mp4を表示 case MIME_TYPE_MP4: header('content-type: video/mp4'); echo( substr( $_SESSION['image']['data'], 4, 4 ) ); break; } ?> ___________________________________________________________ image.php(確認画面 バイナリーデータ確認) <?php function get_file_ext($ext) { //MIMEタイプを取得 $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $_SESSION['image']['data']);/*$GET['image']['data']*/ if (FILE_EXT_PNG == $ext && 'image/png' == $mime_type) { } elseif (in_array($ext, [FILE_EXT_JPEG, '.jpg']) && 'image/jpeg' == $mime_type) { $ext = FILE_EXT_JPEG; } else { // バイナリー文字列確認 $contents = file_get_contents($_SESSION['image']['data']); if (FILE_EXT_PDF == $ext && 'application/pdf' == $mime_type && '%PDF-' == substr($contents, 0, 5)) { } elseif (FILE_EXT_MP4 == $ext && 'video/mp4' == $mime_type && 'ftyp' == substr($contents, 4, 4)) { } else { $ext = null; } } return $ext; } ?> user_add_done.php(表示画面 保存拡張子) $_SESSION['image']これを使う //文字列をファイルに書き込む関数 file_put_contents('./image/',$_SESSION['image']);

    • ベストアンサー
    • PHP
  • 秀丸を利用して、空白から空白の間で、正規表現を使う

    秀丸を利用して、空白から空白の間で、正規表現を使いたいのですが、 やりかたが分かりません。 ^半角スペース.+?半角スペース と思ったのですが、違いました。 正規表現を使いたいところは、 こんな感じになってます。 謎の空白 半角空白 文字列 謎の空白 半角空白 (行頭からここの文字列の前だけ切りたい)  謎の空白 半角空白 文字列 謎の空白 半角空白 (行頭からここの文字列の前だけ切りたい)          : てっきり、全角空白かと思い、記号表示させてみたけど、違いました。 次に、タブかな、と思い、記号表示させてみたけど、違いました。 空白って、全角と半角とタブしか思いつかないのですが、 それ以外に何かあるのでしょうか? また、それは、正規表現で、どう扱うのでしょうか?

  • 正規表現を利用した文字列置換

    javaにて、正規表現を利用して、半角・全角スペース、改行のみで形成されている文字列を空文字にしたいのですが、どのような正規表現を作成すればよろしいでしょうか?

    • ベストアンサー
    • Java
  • VC++ マルチバイト文字とUniCode文字??

    VC++のプロジェクトプロパティには文字セット指定があります 『マルチバイト文字セット』『UniCode文字セット』の2者が選択出来ますが、これらの選択の優劣は何処にありますか? この選択の適否が分からない私は参考にしているサンプルがマルチバイトである時にはマルチバイトを、またUniCodeで書かれたサンプルを見ている際にはUniCodeを指定しており、恥ずかしいかぎりです 選択の判断基準を如何すれば良いのかご指導をお願い申し上げます 更に恥ずかしい質問】なぜC#には文字セット指定が見当たらないのでしようか???

専門家に質問してみよう