ฉันมีปัญหานี้กับ TinyMCE ซึ่งเมื่อฉันส่งเนื้อหาไปยังฐานข้อมูล เนื้อหานั้นจะถูกบันทึกด้วย <!doctype...<html>.....<body>
ฉันเห็นโพสต์เกี่ยวกับการลบปลั๊กอินแบบเต็มหน้า แต่ในกรณีของฉัน ฉันไม่มีสิ่งนั้น ดังนั้นฉันจึงพยายามลบมันเพื่อให้แน่ใจ และรีเฟรชแคชของเบราว์เซอร์ และฉันก็ยังพบปัญหาเดิมอยู่ ฉันแค่ต้องการบันทึก HTML ไว้ระหว่างแท็กเนื้อหา
ฉันส่ง TinyMCE เหมือนแบบฟอร์มปกติโดยมีพื้นที่ข้อความเป็นชื่อ POST และมีปุ่มส่ง
<form method="post" action="/profile/edit/profile/text">
{{ csrf_field() }}
<input type="hidden" name="text2" value="1">
<textarea id="tinymce-editor" name="text">{!! $profile -> text !!}</textarea>
<button class="btn btn-success" type="submit"><i class="fa fa-fw fa-check"></i>Lagre</button>
</form>
.
/**
* @return mixed
*
* Process profile text
*/
public function postEditText() {
// Sanitize HTML
$html = $this -> sanitizeHTML(Input::get('text'));
// Validate
$val = Validator::make([
'text' => $html
], [
'text' => 'sometimes|max:50000'
]);
if ($val -> fails()) {
return $this -> backWithErrors($val);
}
// Update
Auth::user() -> profile() -> update([
'text' => $html
]);
return $this -> backWithSuccess('Profilteksten ble lagret!');
}
.
/**
* @param $html
* @return string
*
* HTML sanitizer
*/
private function sanitizeHTML($html) {
// Disable entity loader
libxml_disable_entity_loader(false);
// New DOM doc
$d = new \DOMDocument();
$d -> loadHTML($html);
// Script tags
$st = $d -> getElementsByTagName('script');
$l = $st -> length;
// Remove
for ($i = 0; $i < $l; $i++) {
$st -> item($i) -> parentNode -> removeChild($st -> item($i));
}
return $d -> saveHTML();
}
ขอบคุณล่วงหน้า.