array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.escapeshellarg.php', 1 => 'escapeshellarg', ), 'up' => array ( 0 => 'ref.exec.php', 1 => 'プログラム実行関数', ), 'prev' => array ( 0 => 'ref.exec.php', 1 => 'プログラム実行関数', ), 'next' => array ( 0 => 'function.escapeshellcmd.php', 1 => 'escapeshellcmd', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/exec/functions/escapeshellarg.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
escapeshellarg — シェル引数として使用される文字列をエスケープする
escapeshellarg() は、文字列をシングルクオート で括り、既存のシングルクオートを全てクオート/エスケープします。こ れにより、文字列を直接シェル関数に渡し、単一の安全な引数として処 理することを可能にします。この関数は、ユーザー入力からの入力を シェル関数への引数として渡す際にエスケープするために使用する必要 があります。シェル関数には、exec(), system()そして バッククォート演算子 を含むシェル関数が含まれます。
Windows では、escapeshellarg()
は、パーセント記号と感嘆符 (遅延環境変数の展開) とダブルクォートをスペースに置き換えます。
そして、文字列をダブルクォートで囲みます。
さらに、連続するバックスラッシュ(\
) は、もうひとつバックスラッシュを追加すればエスケープできます。
arg
エスケープされる引数
エスケープされた文字列
例1 escapeshellarg() の例
<?php
system('ls '.escapeshellarg($dir));
?>