2017-04-11 1 views
0

나는 시스템을 사용하여, PHP를 통해 C++ 프로그램을 호출하고() 함수 :C++ 줄 바꿈이있는 텍스트를 C++ 프로그램에 전달할 수 있습니까?

$use = '"' . $_POST['source'] . '"'; 
system("Subject " . $use); 

경우 $ 사용이 저장 줄 바꿈을 포함하고이 $ _POST 변수를 사용하여 PHP 프로그램으로 전달 자체를 얻을 수있는 몇 가지 텍스트를 . 이 변수를 C++ 프로그램에 전달하고 포함 된 텍스트에 줄 바꿈이 있으면 첫 번째 줄만 프로그램에 전달됩니다. 두 개의 따옴표를 사용하여이 문제를 방지하려고 시도했지만 작동하지 않습니다. 따라서 입력이 예를 들어

word 1 
word 2 

인 경우 단어 1만이 C++ 프로그램에 전달됩니다. 반대로 입력 형식이

word 1 word 2 

인 경우 모든 것이 잘 작동합니다.

해결 방법이 있다면 어떻게 해결할 수 있습니까? 당신은 라인을 교체 할 필요가 알고있는 것처럼

+0

내가 _really 정말 really_ 희망 명령 행에 대한 $use을 탈출 할 필요가 공개적으로 살아갈 것이 아니라 오로지 당신 만이 접근 할 수있는 것입니다. 그렇지 않은 경우 서버에 열린 문입니다. –

+0

@MagnusEriksson, 공정하게 말하자면, [Coliru] (http://coliru.stacked-crooked.com/)는 임의의 명령을 잘 처리합니다. 원하는 것을 실행할 수는 있지만 파괴적인 것을 성취 할 가능성은 거의 없습니다. – chris

+0

'var_dump ($ _ POST [ 'source'])의 출력 내용은 무엇입니까? – hassan

답변

4

당신이 스크립트는 것을

system("Subject " . escapeshellarg($use)) 
+0

왜 그런지는 모르지만 어떻게 든 작동하지 않습니다.테스트 목적으로이 컨텍스트에서 가능한 가장 간단한 C++ 프로그램을 작성했습니다. 단지 전달 된 입력을 모아서 화면에 표시하지만, 첫 번째 줄 바꿈 이전의 내용 만 화면에 나타납니다. – AlexM

+0

아니, 이제 알았어. – AlexM

0

공백으로 나누기 :

$use= str_replace ("\n", " ", $use); 
+0

네, 이것에 대해서도 생각해 보았습니다 만,이 명령의 결과는 모든 줄 바꿈이 사라지기 때문에 텍스트의 origninal 구조가 파괴된다는 것입니다. – AlexM

+0

네, 구조에 대해서는 잘 모르겠지만 전체 문자열이 아닌 부분 문자열 만 바꾸려고 시도 할 수는 있습니다. –

관련 문제