我想从我的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 举报,一经查实,本站将立刻删除。