Есть ли способ сделать ввод следующим образом:
| testing==one two three | setting==more testing |
и получить что-то вроде этого
array['testing'] = "one two three"; array['setting'] = "more testing"
Прямо сейчас я просто взрываю строку и устанавливаю массив с пронумерованным индексом, но я бы хотел, чтобы пользователь мог вводить элементы в любом порядке и иметь возможность использовать массив с ключами из первого значения.
function get_desc_second_part(&$value) { list(,$val_b) = explode('==',$value); $value = trim($val_b); }
Благодаря!
Что-то вроде этого? Трубы добавляют некоторую, может быть, лишнюю сложность (разделителем могут быть новые строки):
$arr = array(); foreach (explode('|', $str_input) as $line) { $l = explode('==', trim($line)); if (isset($l[1])) $arr[$l[0]] = $l[1]; } print_r($arr); /* Array ( [testing] => one two three [setting] => more testing ) */
Если вы можете изменить формат ввода в стандартный формат ini, вы можете просто вызвать parse_ini_file
/ parse_ini_string
. Ваш вход должен выглядеть так:
testing = one two three setting = more testing
Это также даст вам комментарии (начало строк с ;
) и разделы бесплатно. См. http://www.php.net/parse_ini_file
Вы уже выполняете большую часть работы, когда вы взорваетесь на ==
, индекс массива может быть установлен вручную в строку, и вы уже выделяете строку. Просто установите записи массива вручную,
$myarray = new array(); $myarray[$your_exploded_1st_part_string_here] = exploded_second_part