Я написал контроллер для добавления и редактирования сообщений в базе данных.Нет ничего плохого в добавлении нового поста.Произошла ошибка при редактировании вставленного сообщения.Вот мой контроллер.
$sub->smenu_description_uz = $inputs['smenu_description_uz'];
$dom = new \DomDocument();
libxml_use_internal_errors(true);
$dom->loadHtml($sub->smenu_description_uz, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
foreach($images as $k => $img){
$data = $img->getAttribute('src');
//The error is exactly the same as two lines of code.
//That is, if the post is edited, older uploaded photos will be re-encoded.
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$image_name= "/upload/sbs/" . time().$k.'.png';
$path = public_path() . $image_name;
file_put_contents($path, $data);
$img->removeAttribute('src');
$img->setAttribute('src', $image_name);
}
$sub->smenu_description_uz = $dom->saveHTML();
$sub->save();
В настоящее время я использую Larawel 5.7 и HTMLDom.При добавлении данных нет ошибок, но эта ошибка возникает после редактирования поста.Я ожидаю ошибку вывода: неопределенное смещение: 1
ОБНОВЛЕНО Я решил эту проблему с помощью этого кода и , если переменная.
foreach($images as $k => $img){
$data = $img->getAttribute('src');
if(preg_match('/data:image/', $data))
{
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$image_name= "/upload/sbs/" . $sub->smenu_url.'_'.$k.'.png';
$path = public_path() . $image_name;
file_put_contents($path, $data);
$img->removeAttribute('src');
$img->setAttribute('src', $image_name);
}
}