0

我正在尝试使用 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()。

谢谢!

4

1 回答 1

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 中运行。

要包括其余部分,您必须转义您的特殊字符,在这种情况下您的". 当您使用带有语法突出显示的编辑器时,您会更好地看到它。

这里有一个简单的 php esaping 示例。

通常它对命令print_r()的输出很有用exec()。所以你可以看到发生了什么。

于 2012-11-21T07:11:49.487 回答