我有一个PHP脚本,可以创建大型复杂表。我正在尝试设置一个shell脚本,该脚本将接受一个ID作为参数,然后使用该ID运行PHP脚本并接受PHP脚本的HTML输出,以作为cURL发布到DocRaptor的一部分来制作PDF。
示例shell脚本如下所示,我希望document_content是我生成的HTML。
myHTML = usr/bin/php mytablemaker.php?id=$1
curl -H "Content-Type:application/json" -d'{"user_credentials":"API_KEY", "doc":{"name":"docraptor_sample.pdf", "document_type":"pdf", "test":"true", "document_content":"myHTML"}}' http://docraptor.com/docs > docraptor_sample.pdf
我该如何正确地做到这一点?
答案 0 :(得分:2)
如果是bash,那么这样的事情应该有效:
myHTML = $(usr/bin/php mytablemaker.php?id=$1)
curl -H "Content-Type:application/json" -d'{"user_credentials":"API_KEY", "doc":{"name":"docraptor_sample.pdf", "document_type":"pdf", "test":"true", "document_content":"'"$myHTML"'"}}' http://docraptor.com/docs > docraptor_sample.pdf
但是你不要求HTML而是要求HTML作为json字符串,所以让PHP脚本将字符串编码为json,参见json_encode
。或者对"
个字符进行addcslashes($output, '"')
。
参见:
答案 1 :(得分:2)
最好的方法是修改mytablemaker.php以考虑命令行用例。 例如像这样:
if(isset($argv[1])) {
$id=$argv[1];
} else {
$id=$_GET["id"];
}
然后从BASH你做:
# Get HTML from PHP script and escape quotes and
# backslashes in string to comply to the JSON specification
myHTML=$(/usr/bin/php -f mytablemaker.php $1 | sed -e 's/[\\"]/\\&/g')
# Put the value of myHTML in a JSON call and send it to the server
curl -H "Content-Type:application/json" -d'{"user_credentials":"API_KEY", "doc":{"name":"docraptor_sample.pdf", "document_type":"pdf", "test":"true", "document_content":"'"$myHTML"'"}}' http://docraptor.com/docs -o docraptor_sample.pdf
注意在最后一行完成的字符串连接:
'first part'"second part"'third part'
答案 2 :(得分:0)
提供的示例未提及document_url参数,但DocRaptor的错误消息确实存在。
curl -H "Content-Type:application/json" -d'{"user_credentials":"API_KEY", "doc":{"name":"docraptor_sample.pdf", "document_type":"pdf", "test":"false", "document_url":"'"http://foo.com/tablemaker.php?CTN=$1"'"}}' http://docraptor.com/docs -o docraptor_sample.pdf