アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP 文字列から必要な部分を抜き出したい

こんにちは。
PHP初心者です。(PHP5使用)
実はある文字列から必要な部分を抜き出したいのですが、方法を教えていただけないでしょうか?

文字列:

"HTTP/1.1 200 OK
Date: Fri, 29 Oct 2010 03:23:55 GMT
Server: Apache
Content-Length: 111
Connection: close
Content-Type: text/plain; charset=UTF-8

TransactionId=000000020513&TransactionDate=20101029&OperateId=1Auth&MerchantFree1=20101029000001&ResponseCd=G65"

と、ちょっと複雑ですが、この文字列から、

・TransactionId=000000020513
・TransactionDate=20101029
・OperateId=1Auth
・MerchantFree1=20101029000001
・ResponseCd=G65

の=以下の部分をそれぞれ抜き出したいです。

例えば「TransactionId」を検索して「000000020513」を抜き出すとか。
それぞれ=の後の文字は可変(桁数も増減)する場合があります。

上7行はいらない文字列ですが、取得時に必ず文字列に入ってきます。

ご教授の程、宜しくお願い致します。

A 回答 (2件)

たとえばこんな感じ?



<?
$str=<<<eof
HTTP/1.1 200 OK
Date: Fri, 29 Oct 2010 03:23:55 GMT
Server: Apache
Content-Length: 111
Connection: close
Content-Type: text/plain; charset=UTF-8

TransactionId=000000020513&TransactionDate=20101029&OperateId=1Auth&MerchantFree1=20101029000001&ResponseCd=G65
eof;

$pattern="/(TransactionId|TransactionDate|OperateId|MerchantFree1|ResponseCd)=(.+?)(?:&|$)/";
preg_match_all($pattern,$str,$match);
print "<pre>";
print_r($match);
print "</pre>";
?>
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました。
質問後、別件でばたばたしており、連絡が遅くなってしまい失礼しました。
先ほど試してみたところ、バッチリでした。
正規表現は難しいですね?
大変助かりました。
ありがとうございました。

お礼日時:2010/11/01 12:10

$response = 'HTTP/1.1 200 OK...';



$param = parse_str(strstr("\r\n\r\n", $response));

// まれにヘッダをLF(\n) のみで区切ってあるやつがあるが、そんなやつは知らん。

又は、http://jp2.php.net/manual/ja/book.http.php

あ~ text/plain で渡された場合は、parse_str は使えないので、地味に mb_ 関数で。
というか、解析できるかどうかすら危うい。

application/x-www-form-urlencoded で渡されて解析できない場合は、遠慮なく 400 を返してやればいい。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました。
質問後、別件でばたばたしており、連絡が遅くなってしまい失礼しました。
大変参考になりました。
ありがとうございました。

お礼日時:2010/11/01 12:11

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