ฉันใช้ PHP DOM API เพื่อสร้างมาร์กอัป ใช้งานได้ดี แต่ในบางกรณี บรรทัดใหม่ \n
จะปรากฏหลังแท็ก <br>
ฉันจัดการเพื่อสร้าง reprex:
$document = new DOMDocument();
$document->loadHTML('<div>text<br></div>');
$element = $document->getElementsByTagName('div')->item(0);
echo $document->saveHTML($element); // newline appears after <br>
ด้วยเหตุผลบางประการ saveHTML()
จึงไม่ส่งคืนมาร์กอัปเดียวกับที่โหลดครั้งแรก ดังที่ฉันได้สาธิตไปแล้วใน repl การเพิ่มข้อความรอบแท็ก <br>
หรือใช้ saveXML()
ทำงานได้อย่างถูกต้อง
นี่เป็นลักษณะการทำงานพิเศษที่กำหนดไว้ในข้อกำหนด DOM หรือไม่ ปัญหาดูเหมือนจะเกิดขึ้นเมื่อแท็ก <br>
เป็นแท็กลูกแรกหรือลูกสุดท้ายเท่านั้น นั่นคือ I.E. ไม่มีข้อความอยู่ระหว่างนั้น
loadHTML
และsaveHTML
ไม่ปฏิบัติตามข้อกำหนด DOM เนื่องจากจะอนุญาตให้มี XML ที่เสียหาย ซึ่งคนส่วนใหญ่เรียกว่า HTML ตัวอย่างของคุณมีแท็ก<br>
ที่ไม่ปิดแต่ยังคงอ่านได้ มีหลายสิ่งหลายอย่างที่มันจะกรุณาทำเพื่อคุณซึ่งอาจไม่ใช่สิ่งที่คุณต้องการจริงๆ แต่มันใช้ได้กับ HTML ที่มีรูปแบบไม่ดีบางอัน - person Nigel Ren   schedule 24.07.2019<br>
คือ องค์ประกอบที่เป็นโมฆะและการใส่/
นำหน้า>
ไม่มีผลใด ๆ และดังนั้นจึงเป็นทางเลือกหรือไม่ ไม่มีใครบอกว่า PHP เป็นไปตามข้อกำหนดนั้น @MarkusZeller ฉันพยายามตั้งค่าformatOutput
เป็นfalse
สิ่งเดียวกันเกิดขึ้น ฉันคิดว่าfalse
เป็นค่าเริ่มต้น - person dodov   schedule 24.07.2019<br/>
แทนที่จะเป็น<br>
แต่saveHTML()
ยังคงเพิ่ม\n
และส่งออกแท็กเป็น<br>
ต่อไป - person dodov   schedule 24.07.2019