3

私は、他の引数の中でもパスを受け入れるphp CLIスクリプトを書いています。

例は次のとおりです。

php myscript.php -p=/Volumes/Macintosh HD/Users/andrea/samples

スクリプトには引数を赤にする独自の方法があり、-p の値を適切に取得して、$project_path という変数に設定します。

ただし、フォルダーを isdir($project_path) でテストすると、false が返されます。

私はさまざまな方法でパスを渡そうとしました:

  • /Volumes/Macintosh\ HD/Users/andrea/samples
  • 「/Volumes/Macintosh HD/Users/andrea/samples」
  • "/Volumes/Macintosh HD/Users/andrea/samples"
  • 「/Volumes/Macintosh\ HD/Users/andrea/samples」
  • "/Volumes/Macintosh\ HD/Users/andrea/samples"

それらのどれも機能しません。それを機能させるために使用する必要がある形式は何ですか? スクリプトは別の OS (Windows など) でも動作する必要があることを考慮してください。

問題は、パス引数が自動的にエスケープされることです。エスケープを解除する必要があります。返される文字列は次のとおりです。

\'/Volumes/Macintosh\ HD/Users/andrea/samples\'

4

2 に答える 2

0

私は最終的getopt()にエスケープされていない引数を取得し(なぜこの違いがあるのか​​ わかりません)str_replace( array( "'", '"'), '', $file_path );、ラップ引用符を削除するために使用しました。

于 2013-08-14T18:47:31.217 に答える