Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从PHP文件中获取一段文本_Php - Fatal编程技术网

如何从PHP文件中获取一段文本

如何从PHP文件中获取一段文本,php,Php,从wp-config.php文件中,我需要在不包含wp-config文件的情况下获得DB name、username和password值,并将它们分配给三个单独的变量以供进一步使用 define('DB_NAME', 'somedb'); define('DB_USER', 'someuser'); define('DB_PASSWORD', 'somepass'); 我的脚本将位于同一文件夹中。不,我不想使用任何WordPress功能。如果您真的不想包含该文件,如评论中所述, 我们可以使用f

从wp-config.php文件中,我需要在不包含wp-config文件的情况下获得DB name、username和password值,并将它们分配给三个单独的变量以供进一步使用

define('DB_NAME', 'somedb');
define('DB_USER', 'someuser');
define('DB_PASSWORD', 'somepass');

我的脚本将位于同一文件夹中。不,我不想使用任何WordPress功能。

如果您真的不想包含该文件,如评论中所述,
我们可以使用
file()
将文件内容读入数组

迭代每一行并应用一些清理,直到我们得到可以使用的格式:

<?php

$config = file('wp-config.php');

$dbLines = [];

foreach($config as $line){
    if (stristr($line,"define('DB_")!==FALSE){
        $dbLines[] = $line;
    }
}

array_walk($dbLines, 'cleanup'); 
// apply the cleanup() function to all members of the array, basically to each line

function cleanup(&$value){
    // replace the leading 'define(' and trailing closing bracket
    $value = str_replace(
        array("define(",");"),'',$value
        );
    $value = preg_replace('#\s+//(.*)#','',$value); // remove the comments
}

// at this point we have a csv structure with a single quote as the delimiter
// comma+space as a separator

$dbConfig = [];

foreach ($dbLines as $dbline){
    // read the line into separate variables and build an array
    list($key,$value) = (str_getcsv($dbline,', ',"'"));
    $dbConfig[$key] = $value;
}

print_r($dbConfig);
如果要从数组中访问单个元素,只需

print $dbConfig['DB_HOST'];

因此,读取文件并手动解析它。虽然这是一个浪费大量的工作,但显而易见的方法是将其包括在内。顺便说一句,如果你把它包括进来,没有理由把你需要的值分配给不同的变量……我还建议你遵循JimL的建议。您不想包含它的原因是什么?您可以使用
file()
读入它以获得一个行数组。然后循环遍历它并进行一些正则表达式提取。很多麻烦。如果没有什么能阻止你仅仅包含它并让
define()
完成它的工作,我宁愿这样做。包括在WordPress尚未安装时将页面重定向到WordPress安装屏幕。这对我来说很好,我会研究一下。不客气!
print $dbConfig['DB_HOST'];