У меня есть образец массива JSON с пометкой sample.txt, который отправляется из формы тотализатора, в которой записывается имя пользователя и адрес электронной почты. Я использую WooBox, поэтому массив JSON отправляет информацию по каждой записи, поэтому здесь есть две записи: http://pastebin.ca/3409546
На предыдущий вопрос мне сказали разбить] [чтобы JSON_ENCODE мог вычислять отдельные записи. Я хотел бы захватить только имя и адрес электронной почты и импортировать массив в свою базу данных электронной почты (монитор кампании).
Мой вопрос: как добавить метки переменных JSON в массив? Если вы видите мой код, я попытался использовать ярлык $ email. Это правильная форма или это должен быть адрес электронной почты [0] с циклом for?
$url = 'http://www.mywebsite.com/sweeps/test.txt';
$content = file_get_contents($url);
$json = json_decode($content,true);
$tmp = explode('][', $json_string);
if (!count($tmp)) {
$json = json_decode($json_string);
var_dump($json);
} else {
foreach ($tmp as $json_part) {
$json = json_decode('['.rtrim(ltrim($json_string, '['), ']').']');
var_dump($json);
}
}
require_once 'csrest_general.php';
require_once 'csrest_subscribers.php';
$auth = array(
'api_key' => 'xxxxxxxxxxxxxxx');
$wrap = new CS_REST_Subscribers('xxxxxxxxxx', $auth);
$result = $wrap->add($json(
'EmailAddress' => $email,
'Name' => $custom_3_first,
'Resubscribe' => false
));
https://github.com/campaignmonitor/createsend-php/blob/master/samples/subscriber/add.php
Это должно было быть довольно просто: если у вас есть строка JSON и вы вызываете json_decode($string, true)
на нем вы получите его эквивалент в переменной PHP, простой и понятный. Оттуда вы можете получить к нему доступ, как к любому массиву PHP, объекту и т. Д.
Проблема в, у вас нет правильной строки JSON. У вас есть строка, которая выглядит как JSON, но не является допустимой JSON. Запустите его через ЛИНТЕР и вы поймете, что я имею в виду.
PHP не знает, что делать с вашим предполагаемым JSON, поэтому вам придется прибегнуть к ручному разбору, который я бы не рекомендовал. Тем не менее, вы были почти там.
require_once 'csrest_general.php';
require_once 'csrest_subscribers.php';
$auth = array('api_key' => 'xxxxxxxxxxxxxxx');
$wrap = new CS_REST_Subscribers('xxxxxxxxxx', $auth);
$url = 'http://www.mywebsite.com/sweeps/test.txt';
$content = file_get_contents($url);
$tmp = explode('][', $content);
foreach ($tmp as $json_part) {
$user = json_decode('['.rtrim(ltrim($json_string, '['), ']').']', true);
$result = $wrap->add(array(
'EmailAddress' => $user->email,
'Name' => $user->fullname,
'Resubscribe' => true
));
}
Других решений пока нет …