English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文ではphpでparse_strを使用してクエリ文字列を変数に解析する方法について説明します。以下に詳しく説明します:
parse_str()関数は文字列を変数に解析する機能を実現し、これは文字列と変数間の変換メカニズムを実現することを意味します。クライアントデータの送信プロセスでは、データは文字列の形式で送信されます。例えばGETリクエスト、サーバー側で$_GET/$_POSTなど全てのグローバル変数を使用して文字列と変数の変換を実現できます。例えば:https://ja.oldtoolbag.com/?index.php?var1=1&var2=2、リクエスト後にサーバー側で$_GET['var1']の方式でvar1=1&var2=2この文字列を変数に変換します。parse_str()関数はこのような機能を実現し、parse_str()関数を使用して$_SERVER['QUERY_STRING']の値を解析することで、文字列と変数の変換を直接実現できます。例えば$var1。
一、関数プロトタイプ
void parse_str ( string str [, array &arr] )
二、バージョン互換
PHP 3, PHP 4, PHP 5
三、函数基本用法与实例
1. 解析字符串为变量
<?php parse_str("var1=jb51&var2=parse_str"); echo $var1.$var2; ?>
2. 解析字符串并将变量存储到数组中
<?php parse_str("var1=jb51&var2=parse_str",$array); print_r($array); ?>
出力:
Array ( [var1] => jb51 [var2] => parse_str )
説明:这种将变量存储到数组中在PHP 4.0.3 才增加
3. 解析的字符串有空格
<?php parse_str("v ar1=jb51&var 2=parse_str",$array); print_r($array); ?>
出力:
Array ( [v_ar1] => jb51 [var_2] => parse_str )
説明:直接将空格转换为下划线_
四、注意事項
1. array パラメータが設定されていない場合、この関数で設定された変数は同名の既存変数を上書きします。
2. php.ini での magic_quotes_gpc 設定がこの関数の出力に影響を与えます。有効化されている場合、 parse_str() が解析する前に変数は addslashes() で変換されます。
3. parse_str() 関数がパラメータを処理する際に脆弱性があります。攻撃者はこの脆弱性を利用して register_globals を有効にし、他の PHP スクリプトの脆弱性をさらに利用することができます。 parse_str() が 1 つのパラメータで呼び出された場合、この関数は提供された文字列を URL から送信されたリクエスト文字列として解析しますが、外部攻撃者は parse_str() が呼び出される間に多くのリクエスト変数を送信して memory_limit リクエストを終了させることを引き起こすことができます。 parse_str() が呼び出される際にリクエストを閉じた場合、関連する webserver プロセスの残りのライフサイクル中に register_globals タグが常に開かれます。
PHPに関連する内容に興味を持たれた読者は、以下のサイトの特集を確認してください:《PHP文字列(string)の使い方のまとめ》、《PHPデータ構造とアルゴリズムガイド》、《PHPプログラムデザインアルゴリズムのまとめ》、《PHPソートアルゴリズムのまとめ》、《PHP常用ループアルゴリズムと技術のまとめ》、《PHP数学演算技術のまとめ》、《PHP配列(Array)操作技術の完全ガイド》および《PHP一般的なデータベース操作技術のまとめ》
この記事の内容が皆様のPHPプログラムデザインに役立つことを願っています。
声明:この記事の内容はインターネットから提供され、著作権者はすべての権利を保有しています。インターネットユーザーが自発的に貢献し、アップロードしたコンテンツであり、このサイトは所有権を持ちません。また、人間による編集は行われていません。著作権侵害が疑われる場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際、#を@に置き換えてください。申し訳ありませんが、関連する証拠を提供し、確認があれば、このサイトは即座に侵害される内容を削除します。)