#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
)
)
затем просто добавьте переменную часть и конечную точку с запятой
если вы планируете использовать несколько значений, это был бы гораздо более чистый подход