簡體   English   中英

從PHP源獲取數組鍵和值

[英]Get array keys and values from PHP source

我正在編寫配置編輯器。 我正在逐行讀取帶有fopen和fgets的文件。 我想從字符串中獲取數組鍵和值。 我不了解正則表達式,所以我要問。

配置文件示例:

$conf['something'] = 'value';
$conf['other_thing']['another_key'] = 3000;

我無法遍歷$ conf數組,因為它是系統中的SuperObject,並且包含許多其他數據,甚至是初始化的類...

我會做這樣的事情:

// get config file as a variable
require_once('config_file.php');

// get keys
$keys = array_keys($conf);

// get config file as a variable
$values = array_values($conf);

雖然不是您問題的直接答案,但是當您寫到“我正在編寫配置編輯器”時。 那么我假設您也將這個配置文件寫下來。 因此,假設您的編輯器在工作時將配置保存在$conf數組中,我將其轉儲為JSON而不是您的PHP代碼:

file_put_contents('config.json', json_encode($conf));

然后在需要時將其讀回

$conf = json_decode( file_get_contents('config.json') );

\\$conf\\['(.*?)']\\s+=\\s+'(.*?)'; 這是你的模式。 鍵在組1中,值在組2中。

$[]是特殊字符,這就是為什么您應該轉義它們。 \\s+表示空白字符1次或多次。

這是您的正則表達式:

\$conf(\[('.*')\])+\s?=\s?(.*);

第一個匹配項是您的鍵,最后一個匹配項是您的值

由於這是php數組,因此您可以直接遍歷它,並獲取必需的鍵值對,否則您可以使用php的函數array_keys從$ conf數組中獲取所有鍵,並使用array_values獲取數組值

要不然

如果要創建配置編輯器,請嘗試使用ini文件php對創建和使用配置文件有很好的支持,請參見此函數parse_ini_file,這是創建鍵值對的標准方法,如果鍵值對過多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM