我正在尝试从C程序(...)
测试一个php文件基本上我有一个文件名,我想检查php -l并存储输出以供进一步处理。
答案 0 :(得分:2)
在这种情况下,一个简单的解决方案是将输出重定向到文件。然后将文件读入数组。然后,您可以使用阵列进行进一步处理。
像这样(在C中):
system("php -l yourfile.php > myfile");
FILE *f = fopen("myfile", "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);
char *array = malloc(pos);
fread(array, pos, 1, f);
fclose(f);
//your processing part here..
free(array); // free allocated memory
解决方案#2 :调用PHP解释器,并将输出传递给您的程序。 类似于控制台中的以下内容:
php -l yourfile.php | pathToYourCProgram
在上面的例子中,您将从stdin读取PHP的输出。您可以读取整个输入,并直接将其存储到数组中。
答案 1 :(得分:1)
你可以使用“popen”功能。做男人popen了解popen的用法。 popen的第一个参数是你想要执行的二进制文件(即你的情况下是“php -l”),第二个参数是模式(读/写)。在您的情况下将读取文件模式。请参阅以下代码以了解popen的工作原理,相当简单。
http://www.google.com/notebook/public/17135812868734162318/BDSUiDQoQ-ojrzeck
希望有所帮助。答案 2 :(得分:0)
如果从C程序执行php处理器不是强制性的,您可能需要考虑以下完全不同的方法:
创建一个小程序,解析stdin
错误消息并进行一些后期处理。我们称这个程序为check_errors
。
在命令行上:
php -l thefile.php | check_errors
这会捕获php的输出并将其指向check_errors
。
构建一些只做一件事的小工具就像Unix一样,只做一件事,但做得很好。使用管道和重定向可以对这些程序进行排序,进行惊人的复杂操作。