我正在尝试使用SWATH(http://www.cs.cmu.edu/~paisarn/software.html)来处理我的项目。基本上程序会将句子分解成一组单词。我安装了所有东西,并尝试通过命令提示符(Mac上的终端)运行该命令。
我跑了一个命令
swath -u u -m long < in_OdwJYw.txt > test.txt
该程序工作得很好,并提供了正确的输出test.txt和细分词
所以我将代码实现到我的PHP文件中。我用这个方法
exec("swath -u u -m long < in_OdwJYw.txt > test.txt");
没有显示错误“test.txt”文件已创建,但内部没有任何内容(0字节)
我的问题是为什么命令适用于运行提示以及为什么我不使用exec()system()或shell_exec()。
谢谢!
答案 0 :(得分:2)
编辑:原创帖子由OP编辑。代码段是:
exec("swath -b "|" -u u -m long < in_OdwJYw.txt > test.txt");
您必须转义命令字符串。这样的事情应该会有所帮助。
exec("swath -b \"|\" -u u -m long < in_OdwJYw.txt > test.txt");
详细说明,您的字符串将在exec("swath -b \"
这个地方剪切。管道在命令字符串之外。我认为你的命令的其余部分将被忽略,只有第一部分将在exec中运行。
要包括剩下的你必须逃避你的特殊字符,在这种情况下你的"
。当您使用带语法高亮的编辑器时,您会看到它更好。
Here你在php esaping中有一个简单的例子。
print_r()
命令的输出exec()
通常很有用。所以你可以看到发生了什么。