Добавление пробелов в строке PHP в Codeigniter

#php #codeigniter

#php #codeigniter

Вопрос:

Я пытаюсь записать файл, но мне просто нужно найти наилучший способ сделать некоторые пробелы между некоторым кодом “[‘default’][‘hostname’]” space . ‘=’ . space “‘localhost’” , не получается.

В момент перезагрузки страницы он выдает $db['default']['hostname']='localhost'; , но нужен пробел / space $db['default']['hostname'] = 'localhost';

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

 public function index(){
  $output  = '<?php' . "n";

  $output .= "n";

  $output .= '// DB' . "n";

  $output .= '$db' . "['default']['hostname']" space . '=' . space "'localhost'". ";" . "n";

  $file = fopen(APPPATH . 'config/database-test.php', 'w');

  fwrite($file, $output);

  fclose($file);

  $this->load->view('welcome_message');
 }
}  
  

Ответ №1:

$output .= '$db' . "['default']['hostname']" space . '=' . space "'localhost'". ";" . "n";

В этой строке есть синтаксические ошибки, потому что вы пропускаете оператор concat перед первым space и после второго (независимо от того, что подразумевается под пробелом).

Вместо того, чтобы все усложнять, почему бы вам просто не написать это и избежать ада объединения:

 $output .= '$db' . "['default']['hostname'] = 'localhost';n";
  

Комментарии:

1. Когда это сделано, $db_output .= '$db' . "['default']['hostname'] = '$this->request->post['db_localhost']';n"; это выдало $db['default']['hostname'] = '->post['db_localhost']'; , что должно выдать $db [‘default’][‘hostname’] = ‘localhost’;

Ответ №2:

Я думаю, что я нашел ответ, чтобы сделать пробел . " " . , кажется, делает свое дело.

 $output .= '$db' . "['default']['hostname']" . " " . '=' . " " . "'localhost'". ";" . "n";
  

Комментарии:

1. Но зачем вам нужно объединять пробелы?

Ответ №3:

В качестве дополнительного примечания, я вижу, что вы пишете конфигурационный файл, который будет обработан позже.

Я обнаружил, что буферизация вывода и var_export исключительно хорошо справляются с этой задачей.

 ob_start();

var_export($config);

$out = ob_get_clean();
  

затем

 fwrite($f, '$config = '.$out.';'); etc...
  

http://us3.php.net/manual/en/function.ob-get-clean.php

http://us3.php.net/manual/en/function.var-export.php

по сути, это превратит массив в строку, доступную для анализа, такую как

 array(
   'default'=>array(
        'hostname'=>'localhost',
        'user' => 'user', ///etc
    )
)
  

затем просто добавьте переменную часть и конечную точку с запятой

если вы планируете использовать несколько значений, это был бы гораздо более чистый подход