1

我正在使用PhantomJS通过 PHP 获取网页标题和 url。我的 JavaScript 函数是

var page = require('webpage').create(), url;
url = phantom.args[0];

page.open(url, function (status) 
{
    var title = page.evaluate(function () 
    {
        return document.title;
    });

    var url = page.evaluate(function ()
    {
        return document.url;    
    });

    var results = new Array(2);
    results[0] = title;
    results[1] = url;
    console.info(results);
    phantom.exit();
});

然后我尝试results在我的 PHP 中回显该数组,该数组将该函数调用为 JSON:

<?php
    header('content-type: application/json; charset=utf-8');
    $url = $_GET['url'];
    $cmd = '/usr/local/bin/phantomjs pagetitle.js ' . $url;
    $results = exec($cmd);
    echo json_encode(array('pagetitle' => $results[0], 'url' => $results[1]));
?>

title但是我只得到第一个字符url作为输出:

{"pagetitle":"T","url":"h"}

我错过了什么?

4

1 回答 1

0

我无法在 php 方面为您提供帮助(那不是我最喜欢的语言……),但 phantomjs 脚本无效。

从我的角度来看2个错误:

  • document.url 未定义 => 应该是 document.URL(区分大小写)
  • 输出不是 JSON => 调用 JSON.stringify

尝试这个 :

var page = require('webpage').create(), url;
url = phantom.args[0];

page.open(url, function (status) 
{
    var title = page.evaluate(function () 
    {
        return document.title;
    });

    var url = page.evaluate(function ()
    {
        return document.URL;    
    });

    var results = new Array(2);
    results[0] = title;
    results[1] = url;
    console.info(JSON.stringify(results));
    phantom.exit();
});
于 2013-06-06T07:31:20.677 回答