微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Ruby代码中调用PHP脚本

我想从我的ruby代码调用一个PHP脚本.从ruby,它需要将参数作为命令行参数传递给PHP.但是对于带有空格的参数,它将其视为命令.

例如:

result = 'PHP sample.PHP "#{name}" "#{location}"'

回来了

sh: line 1: Blahh Blahh: command not found
sh: line 2: Some more Blahh: command not found

谁能告诉我如何将ruby字符串作为参数传递?

解决方法:

您可以使用反引号语法进行系统调用.

但是实际上,问题是您需要将-f选项传递给PHP,以告诉PHP执行文件,而不是尝试运行命令行参数.

test.rb:

path = File.dirname(__FILE__) + '/'
args = ['arg1', 'arg2']
puts `PHP -f #{ path + 'sample.PHP'} { args.join(' ') }`

sample.PHP

<?PHP 
if (isset($argv)){
 print_r($argv);
}

输出

Array
(
    [0] => ./sample.PHP
    [1] => arg1
    [2] => arg2
)

编辑

您还可以使用StdLib组件Shellwords进行转义并为您引用参数

require 'shellwords'
path = File.dirname(__FILE__) + '/'
args = ['arg1', 'arg2 asdas']
puts `PHP -e #{ path + 'test.PHP'} #{ Shellwords.join(args) }`

输出

Array
(
    [0] => ./test.PHP
    [1] => arg1
    [2] => arg2 asdas
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐