Могу ли я преобразовать строку с json_encode обратно в читаемый HTML в текстовой области?

Я создал текстовую область с текстовым редактором Wysywig на нем. Пользователь щелкает текстовую область и начинает печатать как любой текстовый редактор. Затем они сохранят форму с этим текстом, а затем данные будут сохранены в базе данных с $data['description'] = json_encode($description_data); это сохранит закодированную строку в базе данных.

Вот что я получу в столбце БД:

""<h1>test<\/h1>\r\n\r\n<p>paragraph<\/p>\r\n\r\n<p><u><em><strong>some text<\/strong><\/em><\/u><\/p>\r\n""

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

Моя главная проблема заключается в том, что когда администратор идет редактировать эти данные в текстовой области, текст добавляется обратно как данные выше, что ожидается, как вы можете видеть ниже:

текстовый редактор с jsin в нем

Этот текст не должен иметь ничего общего с содержимым и быть обычным html в текстовой области. Это возможно?

Вот функция контроллера ниже:

public function store(Offer $offer)
{

$offerId = $offer['id'];

$data = Input::except('image','featured');
//$featured_data = array( 'offer_date' => $data['offer_date'], 'starttime' => $data['offer_start_time'], 'endtime' => $data['offer_end_time'] );
$description_data = $data['description'];
$validation = Validator::make($data, Offer::$rules);


if ($validation->fails()) {
return redirect('offers')->with('message', $validation->errors());
} else {
$file = Input::file('image');
$filename = date('Y-m-d-H')."-".$file->getClientOriginalName();

$path = storage_path('app/uploads/' . $filename);
Image::make($file->getRealPath())
->resize(600, 600)
->save($path);

$data['image'] = 'storage/app/uploads/'.$filename;
$data['description'] = json_encode($description_data);

Offer::create( $data );
return redirect('offers')->with('message', 'Offer added!');
}

}

И в форме я получил это:

<div style="clear: both;" class="form-group">
{!! Form::label('description', 'Offer Description:') !!}
{!! Form::textarea('description', null, array('id'=>'editor1','class' => 'ckeditor form-control')) !!}
</div>

Надеюсь, это может быть достигнуто.

0

Решение

Просто используйте json_decode при выводе. это делает противоположность json_encode.

0

Другие решения

Это строка в кодировке json, хотя она не действительна исключительно.

Попробуй это:

$var_str = '<h1>test<\/h1>\r\n\r\n<p>paragraph<\/p>\r\n\r\n<p><u><em><strong>some text<\/strong><\/em><\/u><\/p>\r\n';

$str_in = '{"s": "'. $var_str . '"}';

$sArr = json_decode($str_in, true);

$cleanString = $sArr['s'];

или эквивалент в JavaScript.

PHP скрипка здесь: http://sandbox.onlinephpfunctions.com/code/625c6ffd9d31215f8f73f6e02b5328e0fdf807e7

0

По вопросам рекламы [email protected]