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

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

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

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

2086閲覧

preg_matchでヒットしない

24_24

総合スコア10

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/06/20 11:32

編集2016/06/20 12:28

###前提・実現したいこと
受信したメールの本文から情報を抜き取ってデータベースに格納したい

###発生している問題・エラーメッセージ
preg_matchでヒットしない
$bodyの内容に/aaaa/に該当する部分が存在しない
###該当のソースコード
php

$to = アドレス; if ($to === アドレス){ $text = $_REQUEST['body']; $body = urldecode(mb_convert_encoding($text, 'UTF-8', 'auto')); $insertData = array(); preg_match('/[0-9]{4}年[0-9]{2}月[0-9]{2}/', $body, $match); }

###補足情報
$bodyで取れた内容をそのままベタ書きして入れた場合はpreg_matchで引っかかってmatchに入るが$_REQUEST['body']ではpreg_matchに引っかからずにmatchが空。
$bodyをdebugメールで確認すると内容が表示されpreg_matchで引っかかるはずの部分も記載されている。当方初心者ですのでどうぞお手柔らかにお願い致します。

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

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

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

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

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

kei344

2016/06/20 12:13

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
guest

回答2

0

ベストアンサー

ひとまず urldecode を外して、その上で問題があるようであれば $body と $_REQUEST['body'] を出力したものを質問文に追記ください。

【PHP: urldecode - Manual】
http://php.net/manual/ja/function.urldecode.php

警告

スーパーグローバル $_GET および $_REQUEST の内容はすでにデコード済みのものです。 $_GET や $_REQUEST の要素に対して urldecode() を使用すると、予期せぬ危険な結果となります。


下記で出力した内容を質問文に追記してください。

PHP

1var_dump(base64_encode($_REQUEST['body'])); 2var_dump(base64_encode($body));

投稿2016/06/20 13:10

kei344

総合スコア69398

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

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

0

$body$_REQUEST['body']の内容が全く同じなのに後者だけ失敗するというのは,プログラミング言語自体の致命的なバグで,普通そんなものはあり得ないです.

ベタ書きのものと外部から受け取ったものを===で比較してみてtrueになるかを検証するところからですね.また特殊文字などで正常に確認しにくい場合があるので,それぞれbase64_encode関数を通したものを質問に貼ってもらえませんか.こちらで確認します.

投稿2016/06/20 11:46

mpyw

総合スコア5223

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問