SOFTELメモ

Softel Inc.

【php】php5.4より前でHTTP build query をRFC3986でやりたい

問題

php5.4より前のphpだと、http_build_query()の第4引数のenc_typeにPHP_QUERY_RFC3986を指定できない。

RFC3986でHTTP build query するには?

php

答え

この程度の対応で済むこともある。

スペースのエンコードを変えるには、以下のように。

$query = str_replace('+', '%20', http_build_query($arr));

チルダもそのままにしておいて欲しかったら、以下のように。

$query = str_replace(array('+', '%7E'), array('%20', '~'), http_build_query($arr));

古いphp環境でOAuthのリクエストを作るときなどに、これでしのげることもあります。

関連するメモ

コメント