对于我正在处理的特定PHP脚本,我将使用对Lynx Web浏览器的系统调用将HTML转换为纯文本并捕获输出:
$text = `lynx -dump stackoverflow.com`;
/*
#[1]Stack Overflow [2]RSS
[3]login | [4]about | [5]faq
____________________________
[6]logo homepage
* [7]Questions
* [8]Tags
* [9]Users
* [10]Badges
*/
然而,我想做的是,在服务器上没有Lynx的情况下,优雅地使用不同的方法。 如何检查PATH中是否存在程序?哦,它需要在Windows和Linux上运行...:p
我不是在写一个SO屏幕刮刀,不用担心...
答案 0 :(得分:3)
在Linux中,我会使用
which linx
不知道窗户。你可能会看到在调用一个不存在的应用程序时得到的错误信息是什么,我希望它是一个非常恒定的一个 (希望它不是蓝屏,那么你将不得不用某种方式来挑选屏幕:-D)
答案 1 :(得分:0)
一种可能的解决方案是使用popen函数。尝试从lynx打开输入管道。如果返回false,则可以使用回退方法。请查看the PHP popen function documentation了解详细信息和实施示例。
我刚注意到这是针对Windows的,所以,我将不得不使用我的后备并说你的里程会有所不同。如果你想确保lynx实用程序可用,我建议你确保它在那里,并且你(和你的脚本)知道它在哪里。配置文件指向脚本执行的先决条件的位置没有任何问题。
答案 2 :(得分:-2)
为什么不使用 curl_*
功能或 fopen
甚至 fsockopen
?
实际上,对于页面转储 file_get_contents
就足够了(应该在您的php配置中启用allow_url_fopen
)。
阅读php.net上的相应手册以获取更多信息。