2012-03-10 86 views
1

我現在有在bash現有的代碼,從一個配置文件裏grep關鍵字:從bash的轉換代碼到PHP

[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,所以我想提前感謝你!

回答

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()手冊)

這WIL L負載配置文件到$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。

+0

謝謝你!像魅力一樣工作! – 2012-03-10 23:27:08