如何在 PHP 应用程序中从另一个站点呈现 javascript?
Posted
技术标签:
【中文标题】如何在 PHP 应用程序中从另一个站点呈现 javascript?【英文标题】:How do I render javascript from another site, inside a PHP application? 【发布时间】:2011-07-16 23:20:29 【问题描述】:我正在尝试从我的 php 应用程序内部的网页中读取特定行。到目前为止,这是我的实验设置:
<?php
$url = "http://www.some-web-site.com";
$file_contents = file_get_contents($url);
$findme = 'text to be found';
$pos = strpos($file_contents, $findme);
if ($pos == false)
echo "The string '$findme' was not found in the string";
else
echo "The string '$findme' was found in the string";
echo " and exists at position $pos";
?>
“if”语句现在包含回显运算符,稍后将更改为数据库运算符,当前设置是为了测试功能。
基本上问题在于,使用此方法时,页面上的任何 java 都会作为脚本返回。我需要的是脚本应该在浏览器中呈现的文本。有没有办法在 PHP 中做到这一点?
我最终要实现的是通过从网站供应商处读取库存水平来更新电子商务网站内的库存。供应商不为此使用 RSS 提要。
【问题讨论】:
您需要将 javascript 输出到浏览器。但是,如果它依赖于其他服务器上存在的资源,它可能无法工作 你在标题中提到了JavaScript
,同时标记了Java
。你知道区别吗?
如果在位置 0(字符串的开头)找到字符串,您的 $pos == false
将失败。您需要使用比较值和类型的严格比较运算符 (===
)。如果未找到该值,strpos 返回 FALSE,如果发生任何类型转换,则 false 可能会与 0
混淆。
【参考方案1】:
cURL 没有 javascript 解析器。因此,如果您尝试阅读的内容在初始页面呈现后通过 Javascript 放置在页面中,则将无法通过 cURL 访问。
【讨论】:
【参考方案2】:脚本的结果应该被执行并返回到您的脚本。 PHP 不支持 Web 浏览器本身的任何功能。
我建议您尝试了解 .NET 框架(不是 PHP)中包含的“网络爬虫”和“网络浏览器”
这样你就可以在 php 中使用 exec() 命令来调用它。
尝试在codeproject.com上查找网络爬虫和网络浏览器的示例代码
希望它有效。
【讨论】:
【参考方案3】:您可以像这样将整个网页作为文件获取:
function get_data($url)
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
$returned_content = get_data('http://example.com/page.htm');
$my_file = 'file.htm';
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file);
fwrite($handle, $returned_content);
然后我想您可以使用下面此链接中解释的类作为将 javascript 与 html 分开的指南(通常在 head 标签中)。对于链接的(导入的).js 文件,您必须为这些 url 重复该功能,以及链接/导入的 css。如果您需要将图像保存为文件,您也可以抓取图像。 http://www.digeratimarketing.co.uk/2008/12/16/curl-page-scraping-script/
【讨论】:
以上是关于如何在 PHP 应用程序中从另一个站点呈现 javascript?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中从另一个应用程序启动 Activity