2012-11-04 13 views
6

yılında htmlentities için varsayılan() işlevi tarafından ENT_QUOTES bayrağını ayarlayın.

ben htmlentities($data) yazmak bile o htmlentities($data, ENT_QUOTES) olarak çalışması gerekir böylece, htmlentities() işlev için varsayılan olarak bayrağı ENT_QUOTES ayarlayabilirsiniz bir yolu var mı. Varsayılan php belgelerinde yazılı olarak

ENT_COMPAT | ENT_HTML401 olduğunu.

Bilgileriniz için codeigniter framework, php5 kullanıyorum.

GÜNCELLEME 1: Michael'ın önerdiği şekilde özel bir işlevle sarma yardımcı olabilir, ancak ENT_QUOTES bayrağı kullanılmadan web sitesinde her yerde bunu zaten kullandım ve php tarafından işlevlerinin varsayılanlarını değiştirmek için bir yol olup olmadığını merak ettim.

GÜNCELLEME 2: bence html_escape() dahili işlevi (ben Wesley tarafından önerilen) codeigniter tarafından sağlanan en iyi benim kendi sarmalayıcı işlevini yazmak zorunda kalmamak için.

+0

Neden 'htmlentities' değil' htmlspecialchars' kullanırım? – zerkms

+3

Bu işlevi sadece sarmalayabilirsiniz. 'işlev my_htmlentities ($ string) {return htmlentities ($ string, ENT_QUOTES);} ve bunun yerine' my_htmlentities() 'işlevini kullanın. –

+0

@zerkms Genellikle HTML özniteliklerinde, htmlentities() işlevinin kodlamayı daha düz bir şekilde kodlamasını sağlar. –

cevap

3

bildiğim varsayılan bayrakları değiştirmek için bir yolu yoktur, ancak yorumlarda size verilen tavsiye kesinlikle her durumda bu yaklaşım için en iyi yoldur: Bir sarmalayıcı işlevini kullanın.

Elverişli, Codeigniter biri zaten inşa etti, uygun adlı:

echo html_escape($string); 
Burada ne yaptığını var, hem dizilerde geçebilir

:

/** 
* Returns HTML escaped variable 
* 
* @access public 
* @param mixed 
* @return mixed 
*/ 
if (! function_exists('html_escape')) 
{ 
    function html_escape($var) 
    { 
     if (is_array($var)) 
     { 
      return array_map('html_escape', $var); 
     } 
     else 
     { 
      return htmlspecialchars($var, ENT_QUOTES, config_item('charset')); 
     } 
    } 
} 

Sadece htmlentities için bir arama yapmak projenizi yapın ve html_escape ile değiştirin (dikkatlice). Bu, işlevi değiştirebileceğiniz için gelecekte kolayca değişiklik yapabilmeniz için size fırsat sağlayacaktır. İlk yatırım zamanı biraz ama buna değer.

+0

Sanırım aradığım şey buydu ... Teşekkürler :) –

+0

Dizileri temizleyebilme gerçeği hayatımı çok kolaylaştırdı. Sadece tüm veri dizisini kontrolörün kendisinde bir kerede geçmek zorundayım. görüntülenmek üzere gönderiliyor. –

İlgili konular