Isolution666
@Isolution666
Full-Stack Developer

Какое решение лучше для преобразования слов в html-код?

Здравствуйте.
--
В БД есть записи, типа: 1.jpg|s-500.jpg
и: 6000-z|1000|2000
----
записей очень много, поэтому ПЕРЕДЕЛЫВАТЬ их можно целый месяц, чтобы не заниматься ерундой, я подумал, что лучше будет просто обернуть "картинки", и "значения" в html-код.
Первое, что я решил, так это убрать разделяющую палочку, и заменить на запятую, а потом обернуть в двойные кавычки, чтобы сделать из этого массив, однако, чтобы преобразовать к примеру в json, этим цифрам или словам надо присобачить некое значение, чтобы получилось:
$list = array(1=>"1.jpg", 2=>"s-500.jpg");
Тогда легко можно хранить хоть 50 изображений в одной ячейке таблицы, в виде:
{"1":"1.jpg","2":"s-500.jpg"}
Тогда останется загружать и обновлять в экшене в виде json-строки, как получать из json данные - я знаю.
А вот как преобразовать:
1.jpg|s-500.jpg
в
{"1":"1.jpg","2":"s-500.jpg"}
Без костылей, не представляю, то же самое как-то необходимо сделать и со значениями, можно потом с помощью метода тегов записывать и перезаписывать данные типа: 1.jpg|s-500.jpg
Последние будут ссылками. Дилемма заключается в том, как лучше с такими данными работать, ведь сейчас они хранятся в таком виде, и разделены только палочкой, без пробелов.

Я очень давно, на чистом php выводил такие данные из текстового документа, они как раз хранились в виде:
Имя|Сообщение|Дата
Там достаточно было обернуть имя в html-тег, и убрать палочки, чтобы вывести запись, в моём случае, каждое отдельное слово, каким то чудом должно очутится в:
<?=Html::img('слово из БД', ['alt' => 'image'])?>
и в:
<?=Html::a('слово из БД', '/ssilka/'.слово из БД, ['class' => 'myclass']);?>

==============================================
Подскажите, как быть в такой ситуации, как можно, или как лучше это сделать, через какой язык программирования? В каком хоть направлении двигаться?
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 2
Exploding
@Exploding
wtf?
В $data типа строка из цикла
$data = explode("|", $data);
$data = json_encode($data);

Все. В $data теперь данные в json
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
ПЕРЕДЕЛЫВАТЬ их можно целый месяц

а можно сделать экшен в 15 строчек кода и сделать за 10-минут. Метод как предложил Exploding только сделать базу нормально, взять все записи из старой переложить правильно в новую в цикле.
В yii это вообще не проблема, создаешь временно экшен:
public function actionPerehrehyzchit(){
$old = OldModel::find()->all();
$errors = [];
  foreach($old as $one){
    $data = explode("|", $one->someAttr);
    foreach($data as $one_data){
        $new_model = new NewModel();
        $new_model->someId = $one->id;
        $new_model->imageName = $one_data;
        if(!$new_model->save()){
           $errors[$one->id][] = $new_model->errors;
        }
    }
  }
echo '<pre>';
print_r($errors);
echo '<pre>';
return 'я фсё, удали экшен';
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы