美文网首页
PHP|读取原始文件实现配置代码批量生成

PHP|读取原始文件实现配置代码批量生成

作者: 编程放大镜 | 来源:发表于2022-05-20 21:37 被阅读0次

    最近,项目中遇到需要将 150 多个文件中的公钥处理成 php 可以使用的 pem 文件,然后,在项目中的配置文件为每一个 pem 单独添加对应的配置项。如果手工处理的话需要很久,所以写了个小脚本实现,记录在下面。

            //获取目录下所有文件名
            $pubPath = '/pro/source_file_path/';
            $allPubfile = scandir($pubPath);
    
            // var_dump($allPubfile);die;
    
            foreach($allPubfile as $pubFileName){
                if(strlen($pubFileName)>12 && strpos($pubFileName,'txt')>0){
                    $file_path = $pubPath.$pubFileName;
                    if (file_exists($file_path)) {
                        $fp = fopen($file_path, "r");
                        $str = fread($fp, filesize($file_path));//指定读取大小,这里把整个文件内容读取出来
                        preg_match("/\[([0-9a-z]+)\]/",$str, $res);
                        // var_dump($str, $res[1]); die;
                        $pub_str = $res[1];
                        $pos_id = substr($pubFileName, 0 , strpos($pubFileName,'.'));
                        $conf_txt = <<<EOT
    // {$start}
    \$config['pay']['{$pos_id}'] =  array(   
        'POSID'    => '{$pos_id}', //柜台号
        //公钥
        'POSPUBKEY' => '{$pub_str}',
        'POSPUBKEY_FILE' => '/certs/pay/pos_{$pos_id}_public.pem',
    );     
    EOT
    ;
                        echo $conf_txt,PHP_EOL;
                        $pub_file_path = '/certs/pay/pos_'.$pos_id.'_public.pem';
                        if(!file_exists($pub_file_path)){
                            $poshexPkcs8Public = $pub_str;
                            $pospkcs8PublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . $this->formatRsaKey(base64_encode($this->hexToStr($poshexPkcs8Public))) . "\r\n-----END PUBLIC KEY-----";
                            file_put_contents($pub_file_path, $pospkcs8PublicKey);
                        }
                    }
                }
            }
    

    注意:
    EOT 后面的要顶格写,且加“;”的后面不能有空格。
    Heredoc 技术,是一种Perl风格的字符串输出技术。

    相关文章

      网友评论

          本文标题:PHP|读取原始文件实现配置代码批量生成

          本文链接:https://www.haomeiwen.com/subject/vqkqprtx.html