2014-01-04 3 views
2

Я хочу извлечь некоторую информацию из кода ниже. Такие как user_name, user_email перед отправкой в ​​базу данных.Извлечь информацию из строки перед отправкой в ​​базу данных

Как я понимаю, $ user_info ['user_field_fields'] - это поля базы данных и $ user_info ['user_field_inputs'] значения, которые нужно вставить в соответствующие поля.

$result = dbquery("INSERT INTO ".DB_USERS." (".$user_info['user_field_fields'].") VALUES (".$user_info['user_field_inputs'].")"); 

Было бы хорошо, если я могу использовать код PHP так:

echo $user_name; 

echo $user_email; 

echo other_values; 

экспериментировал с:

$data = array($user_info['user_field_fields'] => $user_info['user_field_inputs']); 

И попытался показать некоторые значения. Но я не могу заставить его работать.

Редактировать 1: Результат var_dump ($ user_info); Хеши изменены и анонизированы.

array(7) { ["user_name"]=> string(13) "Some username" ["user_password"]=> string(64) "0b27f3b44401f2633a1bbcf8447069f555be27eb3adce3ec2f53056ff65325" ["user_salt"]=> string(40) "78aefb9666662399cfaef1a76307777ab859f45" ["user_algo"]=> string(6) "sha256" ["user_email"]=> string(23) "[email protected]" ["user_field_fields"]=> string(331) "user_name, user_algo, user_salt, user_password, user_email, user_hide_email, user_avatar, user_posts, user_threads, user_joined, user_lastvisit, user_ip, user_ip_type, user_rights, user_groups, user_level, user_status, user_location, user_zip, user_inetpakket, user_modem, user_router, user_tvpakket, user_tvkpakket, user_ontvanger" ["user_field_inputs"]=> string(297) "'Some username', 'sha256', '78aefb9666662399cfaef1a76307777ab859f45', '0b27f3b44401f2633a1bbcf8447069f555be27eb3adce3ec2f53056ff65325', '[email protected]', '1', '', '0', '0', '1388665205', '0', '183.81.50.14', '4', '', '', '101', '0', 'Amsterdam', '1000AA', '1', '', '', '1', '', '1601'" } 

Edit2: Рабочий код с раствором из Ушаков Nik

$user_field_fields = explode(', ', $user_info['user_field_fields']); // for getting array of fields 
$user_field_inputs = explode(', ', $user_info['user_field_inputs']); // for getting values 
foreach($user_field_inputs as $k => $val) { $user_field_inputs[$k] = trim($val, "'"); } 
$data= array_combine($user_field_fields, $user_field_inputs); 
extract($data); 
$data= "user_name: ".$user_name."<br />user_email: ".$user_email."<br />http://whois.domaintools.com/".$user_ip; 

$ данных будет отправить по электронной почте администратору для предотвращения спама на редко контролируемых объектах.

+0

Try var_dump ($ user_info) ; чтобы увидеть, как выглядит массив (и дайте нам знать результат, если вам все еще нужна помощь). – eevaa

+0

Добавлен вывод var_dump ($ user_info); Подробнее см. – Karel

ответ

1

, если вы уверены, что поля и значения в том же порядке, то вы можете использовать

array_combine:

$data = array_combine($user_info['user_field_fields'], $user_info['user_field_inputs']); 

это даст вам что-то вроде

array(
    'user_email' => '[email protected]', 
    'user_name' => 'Some Name' 
) 

Затем вы можете сделать extract

extract($data); 

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

EDIT

После того, как вы добавили выход из var_dump($user_info);, очевидно, что я сделал ошибку: это строки! Поэтому вам нужны приготовления.

$user_field_fields = explode(', ', $user_info['user_field_fields']); // for getting array of fields 

$user_field_inputs = explode(', ', $user_info['user_field_inputs']); // for getting values 

Каждый элемент $user_field_inputs должен быть обрезаны, чтобы вырезать символы квотирования

foreach($user_field_inputs as $k => $val) { 
    $user_field_inputs[$k] = trim($val, "'"); 
} 

и теперь вы можете сделать

$data = array_combine($user_field_fields, $user_field_inputs); 

и так далее

+0

Пытался реализовать это, но ничего не показывает. – Karel

+0

ответ был отредактирован –

+0

Это работает! :) Извините, что не включил var_dump ($ user_info) в моем первоначальном вопросе. – Karel

Смежные вопросы