Funkcja html_entity_decode() w PHP

Przykład

Konwertuje zdefiniowane HTML entity "<" (mniejszy od) i ">" (większy od) na znaki:

<?php
$str = "To jest pewien <b>pogrubiony</b> tekst.";
echo htmlspecialchars_decode($str);
?>

Wyjście HTML powyższego kodu wygląda tak (zobacz kod źródłowy):

<!DOCTYPE html>
<html>
<body>
To jest pewien <b>pogrubiony</b> tekst.
</body>
</html>

Wyjście przeglądarki powyższego kodu:

To jest pewien pogrubiony tekst.

Definicja i użycie

Funkcja htmlspecialchars_decode() konwertuje zdefiniowane HTML entity na znaki.

Dekodowane HTML entity to:

  • & Dekoduje do & (i)
  • " Dekoduje do " (cudzysłów podwójny)
  • ' Dekoduje do ' (cudzysłów pojedynczy)
  • < Dekoduje do < (mniejszy od)
  • > Dekoduje do > (większy od)

Funkcja htmlspecialchars_decode() jest odwrotnością funkcji htmlspecialchars().

Gramatyka

htmlspecialchars_decode(string,flags)
Parametr Opis
string Wymagane. Określa ciąg znaków do dekodowania.
flags

Opcjonalnie. Określa sposób obsługi cudzysłów oraz używany typ dokumentu.

Dostępne typy cudzysłów:

  • ENT_COMPAT - Domyślnie. Dekoduje tylko cudzysłów podwójny.
  • ENT_QUOTES - Dekoduje zarówno cudzysłów pojedynczy, jak i podwójny.
  • ENT_NOQUOTES - Nie dekoduje żadnych cudzysłów.

Dodatkowe flagi określające używany typ dokumentu:

  • ENT_HTML401 - Domyślnie. Obsługuje kod HTML 4.01.
  • ENT_HTML5 - Obsługuje kod HTML 5.
  • ENT_XML1 - Obsługuje kod XML 1.
  • ENT_XHTML - Obsługuje kod XHTML.

Szczegóły techniczne

Zwrócony wynik: Zwróć przetworzony ciąg znaków.
Wersja PHP: 5.1.0+
Log zmian:

W PHP 5.4 dodano dodatkowe flagsy do określenia używanego typu dokumentu:

  • ENT_HTML401
  • ENT_HTML5
  • ENT_XML1
  • ENT_XHTML

Więcej przykładów

Przykład 1

Konwersja zdefiniowanych HTML entity na znaki:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars_decode($str, ENT_COMPAT); // Konwertuj tylko podwójne cudzysłów
echo "<br>";
echo htmlspecialchars_decode($str, ENT_QUOTES); // Konwersja podwójnych i pojedynczych cudzysłów
echo "<br>";
echo htmlspecialchars_decode($str, ENT_NOQUOTES); // Nie konwertuj żadnych cudzysłów
?>

Wyjście HTML powyższego kodu wygląda tak (zobacz kod źródłowy):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Steve'<br>
Bill & 'Steve'
</body>
</html>

Wyjście przeglądarki powyższego kodu:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

Przykład 2

Konwersja zdefiniowanych przez PHP HTML entity na podwójne cudzysłów:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars_decode($str, ENT_QUOTES); // Konwersja podwójnych i pojedynczych cudzysłów
?>

Wyjście HTML powyższego kodu wygląda tak (zobacz kod źródłowy):

<!DOCTYPE html>
<html>
<body>
Kocham "PHP".
</body>
</html>

Wyjście przeglądarki powyższego kodu:

Kocham "PHP".