1

对于我正在处理的特定 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 屏幕刮板,别担心......

4

3 回答 3

3

在 Linux 中,我会使用which

which linx

不知道窗户。您可能会看到调用不存在的应用程序时收到的错误消息是什么,我希望它是一个非常恒定的错误消息
(希望它不是蓝屏,那么您将不得不使用某种方式来选择屏幕颜色:-D)

于 2009-05-28T02:39:58.857 回答
0

一种可能的解决方案是使用 popen 函数。尝试从 lynx 打开输入管道。如果它返回 false,您可以使用您的回退方法。查看PHP popen 函数文档以获取详细信息和实现示例。

我刚刚注意到这是针对 Windows 的,所以,我将不得不使用我的后备并说你的里程会有所不同。如果您想确保 lynx 实用程序可用,我建议您确保它在那里并且您(和您的脚本)知道它在哪里。指向脚本执行的先决条件位置的配置文件没有任何问题。

于 2009-05-28T02:41:34.767 回答
-2

为什么不使用curl_*函数fopen甚至fsockopen

实际上,页面转储file_get_contents就足够了(allow_url_fopen应该在您的 php 配置中启用)。

阅读 php.net 上的相应手册以获取更多信息。

于 2009-05-28T09:33:49.943 回答