2011-09-15 10 views
0

PHP Webサイトからポートにカラーコードを送信しようとしています。そのために私はサーバー上でコンソールアプリケーションを使用します。それは次のようになります。コマンドライン引数を使用したCコンソールアプリケーションのハッシュ記号(#)

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    if (argc >= 3) 
    { 
     _tprintf (_T("Command: %s\n"), argv[3]); 

     if (!Messenger::GetInstance()->SetServer(argv[1], _tstoi(argv[2]), false)) 
     { 
      _tprintf(_T("ERROR: SetServer(192.168.10.50, 30000, false) failed")); 
     } 
     else 
     { 
      _TCHAR *p = wcstok(argv[3], _T(";")); 
      while (p) 
      { 
       Messenger::GetInstance()->SendCommand(p); 

       //_tprintf (_T("Token: %s\n"), p); 
       p = wcstok(NULL, _T(";")); 
      } 
     } 
    } 

    return 0; 
} 

exeファイルは、このように呼ばれている:

$command = "Command=LIGHT-COLOR #00ff00"; 
$returnMsg = exec("PassAlong.exe \"" . $server . "\" \"" . $port . "\" \"" . $command . "\""); 

は残念ながら、コンソールアプリはこれだけを返します。 コマンド:LIGHT-COLOR

それは文字列のようですハッシュ記号#で切り捨てられます。

なぜ誰も考えがありますか?

ありがとうございました!大変感謝しています! クリスチャン

+0

これは、コンソールだけでなくPHPでも発生しますか? – DaveRandom

+0

コンソールアプリケーションから直接コマンドを送信すると、#がうまく動作します。ありがとう、あなたのコメントのために、それは今働く、以下を参照してください。 – Christian

答えて

1

そうのように、#をエスケープしてみてください。

$command = "Command=LIGHT-COLOR \\#00ff00"; 

は最初の '\「\」それは理にかなっている場合は、「#」をエスケープそれをエスケープすることです。私はPHPプログラマではないので、これはテストされていません。

+0

これで動作します。あなたは正しい、私はそれをエスケープする必要がありますが、スラッシュを使用していませんでした。 代わりに%23を使用しなければなりませんでした。 ありがとう:) – Christian

関連する問題