我目前在bash中有一个现有的代码,它从配置文件中抓取一个关键字:
[USER1]
usrcid = 5654654654
usrsid = XDFDFSAS22
usrmid = COMPANYNAME1
usrsrt = secret1
urlenc = http://www.url1.com
[USER2]
usrcid = 5654654667
usrsid = XDFDFSAS45
usrmid = COMPANYNAME2
usrsrt = secret2
urlenc = http://www.url2.com
我将它存储为变量并用它来处理脚本的其余部分。我想要实现的是将行为从bash转换为php并进行卷曲:
F1=/etc/config/file.txt
CID=`grep "\[USER1\]" -A 5 $F1 | grep usrcid | awk {'print$3'}`
SID=`grep "\[USER1\]" -A 5 $F1 | grep usrsid | awk {'print$3'}`
MID=`grep "\[USER1\]" -A 5 $F1 | grep usrmid | awk {'print$3'}`
SRT=`grep "\[USER1\]" -A 5 $F1 | grep usrsrt | awk {'print$3'}`
URI=`grep "\[USER1\]" -A 5 $F1 | grep urlenc | awk {'print$3'}`
echo $CID $SID $MID $SRT $URI
我真的不是一个php大师所以请原谅下面的代码,但从一般的角度来看,下面的代码是我对我想要实现的目标的理解:
<?php
include "/etc/config/file.txt"
// *** the equivalent code grep? ***
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
// *** i'm not sure if this one is correct? ***
$returned_content = get_data('$URI/cid=$CID&sid=$SID&mid=$MID&srt=$SRT')
echo $returned_content;
?>
这是我第一次在stackoverflow中询问,所以我想提前感谢你!
答案 0 :(得分:1)
包含不会做你认为它正在做的事情。它不会获取您在文本文件中设置的变量。如果它是您包含的文件中的PHP代码,它会评估它,但在这种情况下,它只是文本。请参阅Manual
您需要使用parse_ini_file()函数。它将配置文件作为第一个参数,将布尔标志作为第二个参数。第二个参数用于让函数知道你应该使用配置文件中的部分。
示例:
file.txt的:
[USER1]
usrcid = 5654654654
usrsid = XDFDFSAS22
usrmid = COMPANYNAME1
usrsrt = secret1
urlenc = http://www.url1.com
[USER2]
usrcid = 5654654667
usrsid = XDFDFSAS45
usrmid = COMPANYNAME2
usrsrt = secret2
urlenc = http://www.url2.com
test.php的:
<?php
$config = parse_ini_file("file.txt", true);
print_r($config);
?>
(请参阅parse_ini_file()
手册)
这会将配置文件加载到$config
变量,它将包含以下内容:
Array
(
[USER1] => Array
(
[usrcid] => 5654654654
[usrsid] => XDFDFSAS22
[usrmid] => COMPANYNAME1
[usrsrt] => secret1
[urlenc] => http://www.url1.com
)
[USER2] => Array
(
[usrcid] => 5654654667
[usrsid] => XDFDFSAS45
[usrmid] => COMPANYNAME2
[usrsrt] => secret2
[urlenc] => http://www.url2.com
)
)
现在,要构建一个可以使用的URL:
$url = "{$config['USER1']['urlenc']}/cid={$config['USER1']['usrcid']}&sid={$config['USER1']['usrsid']}&mid={$config['USER1']['usrmid']}&srt={$config['USER1']['usrsrt']}";
或者构造一个动态的方法来迭代$ config变量中给出的数组,以考虑几个部分。您可以通过您获得的cURL函数运行此URL。