PHP htmlspecialchars() fonksiyonu

Örnek

Önceden tanımlanmış karakterler "<" (küçüktür) ve ">" (büyüktür) HTML ifadesine dönüştürülür:

<?php
$str = "Bu, bazı <b>kalın</b> metin içerir.";
echo htmlspecialchars($str);
?>

Yukarıdaki kodun HTML çıktısı şu şekildedir (kaynak kodunu görüntüle):

<!DOCTYPE html>
<html>
<body>
Bu, bazı <b>kalın</b> metin içerir.
</body>
</html>

Yukarıdaki kodun tarayıcı çıktısı şu şekildedir:

Bu, bazı <b>kalın</b> metin içerir.

Çalıştırma Örneği

Tanım ve Kullanım

htmlspecialchars() fonksiyonu önceden tanımlanmış karakterleri HTML ifadesine dönüştürür.

Önceden tanımlanmış karakterler:

  • & (ve işareti) &ye dönüşür
  • " (çift tırnak) "ye dönüşür
  • ' (tek tırnak) 'ye dönüşür
  • < (küçüktür) <'ye dönüşür
  • > (büyüktür) >'ye dönüşür

İpucu:Özel HTML ifadesini karaktere dönüştürmek için kullanın htmlspecialchars_decode() Fonksiyon.

Sözdizimi

htmlspecialchars(string,flags,character-set,double_encode)
Parametreler Açıklama
string Gerekli. Dönüştürülecek diziyi belirtir.
flags

İsteğe bağlı. Tırnakların nasıl ele alınacağını, geçersiz kodlamaların nasıl ele alınacağını ve hangi belge türünün kullanılacağını belirler.

Kullanılabilir tırnak türleri:

  • ENT_COMPAT -Varsayılan. Yalnızca çift tırnak kodlanır.
  • ENT_QUOTES - Çift ve tek tırnak kodlanır.
  • ENT_NOQUOTES - Hiçbir tırnak kodlanmaz.

Geçersiz kodlama:

  • ENT_IGNORE - Geçersiz kodlamayı yoksay, fonksiyonun boş bir dize dönmesini sağlama. Bu, güvenlik üzerinde etki yapabileceği için en azından kullanılmalıdır.
  • ENT_SUBSTITUTE - Geçersiz kodlamayı belirtilen bir karakterle değiştir, boş bir dize dönmek yerine Unicode değişken karakteri U+FFFD (UTF-8) veya &#FFFD; ile.
  • ENT_DISALLOWED - Belirtilen belge türündeki geçersiz karakter puanlarını Unicode değişken karakteri U+FFFD (UTF-8) veya &#FFFD; ile değiştir.

Kullanılacak belge türünün ek bayraklarını belirler:

  • ENT_HTML401 - Varsayılan. HTML 4.01 olarak işlenir.
  • ENT_HTML5 - HTML 5 olarak işlenir.
  • ENT_XML1 - XML 1 olarak işlenir.
  • ENT_XHTML - XHTML olarak işlenir.
character-set

Opsiyonel. Kullanılacak karakter setini belirleyen bir dize.

İzin verilen değerler:

  • UTF-8 - Varsayılan. ASCII ile uyumlu çok baytlı 8 bit Unicode
  • ISO-8859-1 - Batı Avrupa
  • ISO-8859-15 - Batı Avrupa (Euro simgesi + ISO-8859-1'te kaybolan Fransızca ve Fince harfleri eklendi)
  • cp866 - DOS'a özel Kiril karakter seti
  • cp1251 - Windows'a özel Kiril karakter seti
  • cp1252 - Windows'a özel Batı Avrupa karakter seti
  • KOI8-R - Rusça
  • BIG5 - Geleneksel Çince, öncelikle Tayvan'da kullanılır
  • GB2312 - Basit Çince, ulusal standart karakter seti
  • BIG5-HKSCS - Hong Kong genişletilmiş Big5
  • Shift_JIS - Japonca
  • EUC-JP - Japonca
  • MacRoman - Mac işletim sistemi kullandığı karakter seti

Açıklama:PHP 5.4 öncesi sürümlerde, tanınamayan karakter setleri ISO-8859-1 ile atlanır ve değiştirilir. PHP 5.4'ten itibaren, tanınamayan karakter setleri atlanır ve UTF-8 ile değiştirilir.

double_encode

Opsiyonel. Mevcut HTML entitelerini kodlama gerektirip gerekmediğini belirler.

  • TRUE - Varsayılan. Her bir entiteyi dönüştürür.
  • FALSE - Mevcut HTML entitelerini kodlamaz.

Teknik ayrıntılar

Dönüş değeri:

Dönüştürülen dizeyi döner.

Eğer string Geçersiz kodlama içeriyorsa, boş bir dize döner, ENT_IGNORE veya ENT_SUBSTITUTE bayrağı ayarlanmadıysa.

PHP sürümü: 4+
Güncelleme günlüğü:

PHP 5'te,character-set Parametrenin varsayılan değeri UTF-8 olarak değiştirildi.

PHP 5.4'te: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 ve ENT_XHTML eklendi.

PHP 5.3'te ENT_IGNORE eklendi.

PHP 5.2.3'te yeni eklendi double_encode Parametreler.

PHP 4.1'de, aşağıdakiler eklendi: character-set Parametreler.

Daha Fazla Örnek

Örnek 1

Bazı önceden tanımlanmış karakterleri HTML karakterine dönüştür:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // Yalnızca çift tırnağı dönüştür
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Çift ve tek tırnakları dönüştür
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Hiçbir tırnağı dönüştürmez
?>

Yukarıdaki kodun HTML çıktısı şu şekildedir (kaynak kodunu görüntüle):

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

Yukarıdaki kodun tarayıcı çıktısı şu şekildedir:

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

Çalıştırma Örneği

Örnek 2

Çift tırnağı HTML karakterine dönüştür:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Çift ve tek tırnakları dönüştür
?>

Yukarıdaki kodun HTML çıktısı şu şekildedir (kaynak kodunu görüntüle):

<!DOCTYPE html>
<html>
<body>
Ben "PHP"'yi seviyorum.
</body>
</html>

Yukarıdaki kodun tarayıcı çıktısı şu şekildedir:

Ben "PHP"'yi seviyorum.

Çalıştırma Örneği