Hướng dẫn html_entity_decode

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:

Hướng dẫn html_entity_decode

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.

Hàm html_entity_decode() sẽ chuyển đổi các kí hiệu HTML entities thành các kí tự tương ứng.

Hướng dẫn html_entity_decode

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm html_entity_decode() có tác dụng ngược lại so với hàm htmlentities().

Cú pháp

Cú pháphtml_entity_decode( $str);

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • $str là chuỗi chứa các kí hiệu HTML entities cần được chuyển đổi.

Ví dụ

$html=" something like this   ";
$str = htmlentities( $html, ENT_COMPAT, 'UTF-8')."
"; $htmlentity = htmlentities( $str, ENT_COMPAT, 'UTF-8'); $str = html_entity_decode($htmlentity); echo $htmlentity . "
"; echo $str. "
";

Kết quả

<html> <head><head>something like this </html>
something like this

Tham khảo: php.net

Tôi gặp tình huống đang chuyển một chuỗi vào một hàm. Tôi muốn chuyển đổi  thành "" (một khoảng trống) trước khi chuyển nó vào hàm. Liệu html_entity_decodecó phải nó?

Nếu không phải làm như thế nào?

Tôi biết str_replacenhưng có cách nào khác không?

  • php
  • html
  • string
  • whitespace
  • html-entities

13 hữu ích 2 bình luận 28k xem chia sẻ

answer

38

Hướng dẫn html_entity_decode

Trích dẫn từ html_entity_decode()sách hướng dẫn:

Bạn có thể thắc mắc tại sao trim(html_entity_decode(' ')); không giảm chuỗi thành một chuỗi trống, đó là bởi vì ' ' thực thể không phải là mã ASCII 32 (được loại bỏ bởi trim ()) mà là mã ASCII 160 (0xa0) trong bộ ký tự ISO 8859-1 mặc định.

Bạn có thể sử dụng str_replace()để thay thế ký tự ascii # 160 thành một khoảng trắng:

 <');
echo 'before ' . $a . PHP_EOL;
$a = str_replace("\xA0", ' ', $a);
echo ' after ' . $a . PHP_EOL;

38 hữu ích 2 bình luận chia sẻ

answer

5

Hướng dẫn html_entity_decode

html_entity_decode không chuyển đổi  thành một khoảng trắng, không chỉ là một không gian "đơn giản" (ASCII 32), mà là một khoảng trắng không ngắt (ASCII 160) (vì đây là định nghĩa của  ).

Nếu bạn cần chuyển đổi sang ASCII 32, bạn vẫn cần một str_replace(), hoặc, tùy thuộc vào tình huống của bạn, a preg_match("/s+", ' ', $string)để chuyển đổi tất cả các loại khoảng trắng thành khoảng trắng đơn giản.

5 hữu ích 1 bình luận chia sẻ

answer

5

Hướng dẫn html_entity_decode

YES

See PHP manual http://php.net/manual/en/function.html-entity-decode.php.

Carefully read the Notes, maybe that s the issue you are facing:

You might wonder why trim(html_entity_decode(' ')); doesn't reduce the string to an empty string, that's because the ' ' entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 characterset.

5 hữu ích 0 bình luận chia sẻ

answer

2

Hướng dẫn html_entity_decode

Không chắc đó có phải là giải pháp khả thi cho hầu hết các trường hợp hay không nhưng tôi đã sử dụng trim(strip_tags(html_entity_decode(htmlspecialchars_decode($html), ENT_QUOTES, 'UTF-8')));trong ứng dụng gần đây nhất của mình. Việc bổ sung htmlspecialchars_decode()ban đầu là điều duy nhất thực sự sẽ tước bỏ chúng.

2 hữu ích 0 bình luận chia sẻ

Hướng dẫn html_entity_decode

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Hướng dẫn html_entity_decode