phpにコマンドラインからスペース入りのファイル名を渡す場合はパイプで
thunarのアクションなどでphpスクリプトにファイル名を渡す際に、$argvを使っていたけど
- ファイル名にスペースが含まれている場合のことを考えて、impludeで連結する処理を入れて置かなければならない。
- 処理によってはスペースを「\ 」に置換したりする必要がある。
- $argv[0]がphpスクリプトそのものなので、それを除いておく必要がある。
ということで、けっこう面倒だけど、他の方法が思いつかなかった。
それが突然ひらめいた。ファイル名をechoして、パイプで渡してやればいい。thunarのアクションには
echo %f |script.php
などとして、phpの方では
<?php $line = trim(fgets(STDIN)); // STDIN から 1 行読み込む ?>
PHP: I/O ストリーム - Manual
と1行で処理可能。
すっきりしたわ。
シェルスクリプトでも使える、かな。