Intereting Posts
Включение CORS в приложении CakePHP Редактор шаблона PHP, использующий хранилище файлов, базу данных или и то, и другое? Возможно ли получить путь сохраненного файла cookie? Уведомление, когда кто-то загружает видео Из имени строки класса можно получить статическую переменную? Как эхо в PHP без возврата каретки? Laravel Проверка наличия или отсутствия данных из модели подключить gmail через php imap? ошибка сертификата локального эмитента Удалите все специальные символы из строки in () – Typo3 – queryInterface Форма Symfony – доступ Entity внутри дочерней записи Тип в CollectionType Неустранимая ошибка: исключить исключение «Parse \ ParseException» с сообщением «Ошибка SSL-сертификата: невозможно получить сертификат локального эмитента» Youtube Data API v3: как комментарий другого пользователя Сессия PHP не сохраняется после вызова curl PHPExcel заканчивается из 256, 512 и также 1024 МБ ОЗУ

Функции PHP json_encode и javascript

Мне нужно закодировать функцию javascript в объекте JSON в PHP.

Эта:

$function = "function(){}"; $message = "Hello"; $json = array( 'message' => $message, 'func' => $function ); echo json_encode($json); 

выходы:

 {"message":"Hello","func":"function(){}"} 

Я хочу:

 {"message":"Hello","func":function(){}} 

Могу ли я сделать это с помощью json_encode?

Как сказал Яни, это невозможно напрямую с JSON, но это может помочь вам: http://web.archive.org/web/20080828165256/http://solutoire.com/2008/06/12/sending-javascript- функции-над-JSON /

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

Если вы не хотите писать свой собственный JSON-кодер, вы можете обратиться к Zend_Json , кодер JSON для Zend Framework. Он включает в себя возможность справиться с выражениями JSON .

json_decode анализирует данный массив на строку json, поэтому вы можете играть с ним как строку. Просто используйте уникальную строку, чтобы указать начало и конец функции. Затем используйте str_replace для удаления кавычек.

 $function = "#!!function(){}!!#"; $message = "Hello"; $json = array( 'message' => $message, 'func' => $function ); $string = json_encode($json); $string = str_replace('"#!!','',$string); $string = str_replace('!!#"','',$string); echo $string; 

Выход будет:

 {"message":"Hello","func":function(){}} 

Я пишу эту простую функцию для всей функции json, основанной на помощи my myabe, помогите кому-то:

 function json_encode_ex($array) { $var = json_encode($array); preg_match_all('/\"function.*?\"/', $var, $matches); foreach ($matches[0] as $key => $value) { $newval = str_replace(array('\n', '\t','\/'), array(PHP_EOL,"\t",'/'), trim($value, '"')); $var = str_replace($value, $newval, $var); } return $var; } 

Вы можете попробовать следующее:

 var json_string = '{"message":"Hello","myfunc":"function(){ alert(this.message) }"}'; var json_string = JSON.parse(json_string, function(k,v){ if(typeof v == 'string' && /function\(\)\{/.test(v)){ return eval(k+' = '+v); }else{ return v } }); 

Заключительная часть в PHP, похоже, сейчас решена. Вы можете использовать

json_encode($p, JSON_UNESCAPED_UNICODE)

таким образом ваша функция не будет экранирована. Однако

Эта функция также может помочь:

 function jsonify($var){ return str_ireplace(array("'function",'"function',"}'",'}"'),array("function",'function',"}",'}'),json_encode($var)); } 

Взято отсюда: http://network.convergenceservices.in/forum/105-uknowva-development/4710-introducing-convhelperjsonify-in-uknowva-251.html#4710