2013-06-10 2 views

ответ

3

Существует список аргументов командной строки для phantomjs здесь: https://github.com/ariya/phantomjs/wiki/API-Reference

Вы можете использовать конкатенацию или интерполяции для передачи их из PHP, просто знать и осторожны, чтобы защитить от атак инъекций, если аргументы могли когда-либо поступать с пользовательского ввода.

+0

Я вижу список, но я не вижу здесь ничего, что может помочь мне передать некоторые данные из PHP в phantomjs файл – arvinsim

+0

@arvinsim ли вы хотите отредактировать файл 'phantomjs-file.js', прежде чем выполнять phantomjs? Вы можете просто открыть файл с помощью fopen и отредактировать его, как обычно, вы редактируете файл на PHP. – Paulpro

+0

Не совсем. То, что я имел в виду, выглядит примерно так: у меня есть данные из PHP, как ури. Я хочу передать эти данные в файл phantomjs, который будет выполнен. – arvinsim

1

Возможно, вы сможете сделать что-то подобное.

$array = array("option1"=>"Test", "option2"=>"test2"); // this is what you want in phantom 
$tmp = tempnam("/path/to/tempDir/", "PHANTOM_"); 
file_put_contents($tmp, "var params = ".json_encode($array)."; ".file_get_contents("a-phantomjs-file.js")); 
shell_exec("phantomjs ".escapeshellarg($tmp)); 
unlink($tmp); 

Затем в файле фантомного вы могли получить доступ к свойствам, как

params.option1 
1

отправлять и принимать данные и от PhantomJS с PHP как:

$command = '/path/to/phantomjs /path/to/my/script.js ' . escapeshellarg($uri); 
$result_object = json_decode(shell_exec($command)); 

ПРЕДУПРЕЖДЕНИЕ: Убедитесь, что отключить ввод пользователя, чтобы другие не выполняли код на вашем сервере!

Внутри JavaScript переменная URI доступен в качестве второго элемента system.args массива (первый элемент является имя скрипта, которому вы звоните):

var system = require('system'); 
var uri = system.args[1]; 

Когда Javascript будет сделано, вы можете выходной переменной JSON перед выходом PhantomJS:

console.log(JSON.stringify({ 
    "status": "success" 
})); 
phantom.exit(); 

в первых строках PHP кода в этом примере мы уже используется json_decode() декодировать обычный текст JSON возвращаемого значения в OBJE кт, поэтому внутри PHP мы можем получить доступ к переменной status с помощью:

print $result_object->status; 
Смежные вопросы