Hướng dẫn dùng htmltidy trong PHP

Tôi đã không tìm thấy khả năng "chỉ reindent - mà không có bất kỳ thay đổi nào". Tệp cấu hình tiếp theo sẽ "sửa chữa" ở mức thấp nhất có thể và (hầu hết) chỉ thụt lề lại html. Tidyvẫn đang sửa một số điều kiện sai, chẳng hạn như các thuộc tính trùng lặp (lặp lại).

#based on http://tidy.sourceforge.net/docs/quickref.html #HTML, XHTML, XML Options Reference anchor-as-name: no #? doctype: omit drop-empty-paras: no fix-backslash: no fix-bad-comments: no fix-uri:no hide-endtags: yes #? #input-xml: yes #? join-styles: no literal-attributes: yes lower-literals: no merge-divs: no merge-spans: no output-html: yes preserve-entities: yes quote-ampersand: no quote-nbsp: no show-body-only: auto #Diagnostics Options Reference show-errors: 0 show-warnings: 0 #Pretty Print Options Reference break-before-br: yes indent: yes indent-attributes: no #default indent-spaces: 4 tab-size: 4 wrap: 132 wrap-asp: no wrap-jste: no wrap-php: no wrap-sections: no #Character Encoding Options Reference char-encoding: utf8 #Miscellaneous Options Reference force-output: yes quiet: yes tidy-mark: no

Ví dụ, đoạn html tiếp theo

not closed para

h2 head

  • not closed li
  • closed li
some text

sẽ thay đổi thành

not closed para

h2 head

  • not closed li
  • closed li
some text

Như bạn có thể nhận thấy, hide-endtags: yesdấu đóng từ dấu đầu dòng thứ hai trong đầu vào. Đặt hide-endtags: no- sẽ nhận được tiếp theo:

not closed para

h2 head

  • not closed li
  • closed li
some text

vì vậy, tidythêm đóng

và đóng vào dấu đầu dòng đầu tiên.

Tôi không tìm thấy khả năng bảo tồn mọi thứ trên đầu vào và chỉ nhập lại tệp.

24 hữu ích 3 bình luận chia sẻ

Hàm htmlentities() và html_entity_decode() được sử dụng để làm việc với các ký tự HTML. Vậy làm thế nào để sử 2 hàm này trong PHP một cách dễ dàng. Hãy tìm hiểu khái niệm và cách dùng qua bài dưới đây.

  • Hàm htmlentities() trong PHP
  • Hàm html_entity_decode() trong PHP

Hàm htmlentities() đượng dùng để chuyển đổi các ký tự thành ký tự HTML entiies.

HTML Entities là gì?

HTML entiies là ký tự thực thể được sử dụng để hiển thị các biểu tượng, ký tự trong HTML.

Giả sử như bạn đang muốn viết dấu < hoặc > so sánh hai số nhưng lúc này trình duyệt cho rằng đó là một tag của HTML. Để tránh tình trạng này cần phải dùng tới HTML entiies.

Khi viết sẽ có dạng:

&name;
&#number;

Một số ký tự thực thể trong HTML:

Cú pháp htmlentities:

htmlentities( $string, $flags = ENT_COMPAT | ENT_HTML401, $encoding = ini_get("default_charset");

Giải thích:

  • $string: Là chuỗi cần truyền vào
  • $flags: truyền vào một số giá trị như:
    • ENT_COMPAT.
    • ENT_QUOTES.
    • ENT_NOQUOTES.
    • ENT_IGNORE .
    • ENT_SUBSTITUTE.
    • ENT_DISALLOWED.
    • ENT_HTML401.
    • ENT_XML1.
    • ENT_XHTML.
    • ENT_HTML5
  • $encoding: Đây là một tham số không bắt buộc

Chạy đoạn mã sau:

 Một đoạn văn bản   ";
$string = htmlentities( $html, ENT_COMPAT, 'UTF-8');
$result = htmlentities( $string, ENT_COMPAT, 'UTF-8');
echo $string. "
"; echo $result . "
"; ?>

Kết quả nhận được là:

 Một đoạn văn bản   
<html> <head><head>Một đoạn văn bản   </html>

Hàm html_entity_decode() trong PHP

Hàm html_entity_decode() sẽ làm việc ngược lại so với htmlentities(). Sẽ chuyển đổi ký tự thực thể sang ký tự HTML.

Cũng với ví dụ trên mình sẽ thêm một đoạn lệnh phía dưới:

$r = html_entity_decode($result);

echo $result . "
"; echo $r . "
";

Và kết quả khi echo $r ra sẽ là:

 Một đoạn văn bản 

Với bài viết về hai hàm htmlentities(), html_entity_decode() trong PHP bạn đã hiểu được cách dùng như thế nào rồi đấy. Khi đọc bạn nên viết mã để thực hành kẻo quên mất nhé. Ngoài ra hãy thường xuyên ghé thăm blog để đọc thật nhiều bài viết về ngôn ngữ PHP.