Á¶°¢ ÄÚµå : HTML ¿£Æ¼Æ¼ º¯È¯ÇÔ¼ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C>htmlspecialchars



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¼³¸í

phpÀÇ htmlspecialschars ÂüÁ¶

¾î¶² ¹®ÀÚµéÀº HTML¿¡¼­ Ưº°ÇÑ Á¤ÀǸ¦ °¡Áö±â¿¡, ±× Àǹ̸¦ º¸Á¸ÇÏ·Á¸é, HTML ¿£ÅÍÆ¼·Î Ç¥ÇöÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÀÌ·¯ÇÑ º¯È¯À» ¼öÇàÇÑ ¹®ÀÚ¿­À» ¹ÝȯÇÕ´Ï´Ù; ÀÌ ¹ø¿ªÀº ¸ðµç À¥ ÇÁ·Î±×·¡¹Ö¿¡¼­ ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ¸ðµç HTML ¹®ÀÚ ¿£ÅÍÆ¼¸¦ ¹ø¿ªÇØ¾ß ÇÑ´Ù¸é, ÀÌ ÇÔ¼ö ´ë½Å htmlentities()¸¦ »ç¿ëÇϽʽÿÀ.

ÀÌ ÇÔ¼ö·Î °Ô½ÃÆÇÀ̳ª ¹æ¸í·Ï µîÀÇ ÇÁ·Î±×·¥¿¡¼­, HTMLÀ» Æ÷ÇÔÇÏ´Â »ç¿ëÀÚ ÀÔ·Â ÅØ½ºÆ®¸¦ ¸·À» ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃÀûÀÎ µÎ¹øÂ° ÀÎÀÚ quote_styleÀº ÀÛÀº µû¿ÈÇ¥¿Í Å« µû¿ÈÇ¥¸¦ ¾î¶»°Ô ó¸®ÇÒÁö °áÁ¤ÇÕ´Ï´Ù. ±âº» ¸ðµå´Â ÇÏÀ§ ȣȯ ¸ðµå ENT_COMPAT·Î, Å« µû¿ÈÇ¥¸¸ º¯È¯ÇÕ´Ï´Ù. ENT_QUOTES¸¦ ÁöÁ¤Çϸé ÀÛÀº µû¿ÈÇ¥¿Í Å« µû¿ÈÇ¥ µÑ ´Ù º¯È¯Çϰí, ENT_NOQUOTES¸¦ ÁöÁ¤Çϸé ÀÛÀº µû¿ÈÇ¥¿Í Å« µû¿ÈÇ¥ µÑ ´Ù º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù.

´ÙÀ½ ¹®ÀÚµéÀ» º¯¿ªÇÕ´Ï´Ù:

&'(¾ÚÆÛ»÷µå)´Â '&'°¡ µË´Ï´Ù.

'"'(Å« µû¿ÈÇ¥)´Â ENT_NOQUOTES¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ» ¶§ '"'°¡ µË´Ï´Ù.

'''(ÀÛÀº µû¿ÈÇ¥)´Â ENT_QUOTES¸¦ ÁöÁ¤ÇßÀ» ¶§¸¸ '''°¡ µË´Ï´Ù.

'<'(º¸´Ù ÀÛÀ½)´Â '&lt;'°¡ µË´Ï´Ù.

'>'(º¸´Ù Å­)´Â '&gt;'°¡ µË´Ï´Ù.

»ç¿ë¹æ¹ý

¾Æ·¡ÂüÁ¶

ÄÚµå


#include <stdio.h> 
#include <malloc.h> 
 
#define ENT_HTML_QUOTE_NONE        0 
#define ENT_HTML_QUOTE_SINGLE    1 
#define ENT_HTML_QUOTE_DOUBLE    2 
 
#define ENT_COMPAT        ENT_HTML_QUOTE_DOUBLE 
#define ENT_QUOTES        (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE) 
#define ENT_NOQUOTES    ENT_HTML_QUOTE_NONE 
 
static const struct { 
    unsigned short charcode; 
    char *entity; 
    int entitylen; 
    int flags; 
}basic_entities[]={ 
    {'&', "&amp;", 5,0}, 
    {'"', "&quot;",6,ENT_HTML_QUOTE_DOUBLE}, 
    {'\'',"&#039;",6,ENT_HTML_QUOTE_SINGLE}, 
    {'<', "&lt;",    4,0}, 
    {'>', "&gt;",    4,0}, 
    {0,NULL,0,0} 
}; 
 
int htmlspecialchars(char *,char **,int); 
 
int main(int argc,char **argv){ 
 
    char *src="<br>' \" & &This is test\n^^;\n\n"; 
    char *ret; 
 
    htmlspecialchars(src,&ret,ENT_COMPAT); 
    printf("%s\n",ret); 
    free(ret); 
 
    return 0; 
 
} 
 
int htmlspecialchars(char *src,char **ret,int type){ 
 
    int len=0; 
    int entity_len=0; 
    int size=0; 
    char *tmp; 
 
    len=strlen(src); 
    tmp=src; 
 
    while(*src!='\0'){ 
 
        switch(*src){ 
 
 
            case '&'://     
                entity_len+=basic_entities[0].entitylen; 
                break; 
 
            case '"'://    " 
 
                if((type==ENT_COMPAT)||(type=ENT_QUOTES)) entity_len+=basic_entities[1].entitylen; 
                break; 
 
            case '\''://    ' 
 
                if((type!=ENT_COMPAT)||(type==ENT_QUOTES)) entity_len+=basic_entities[2].entitylen; 
                break; 
 
            case '<'://    < 
 
                entity_len+=basic_entities[3].entitylen; 
                break; 
 
            case '>'://    > 
 
                entity_len+=basic_entities[4].entitylen; 
                break; 
 
        } 
 
        ++src; 
 
    } 
 
    src=tmp; 
    size=len+entity_len; 
 
    if(((*ret)=(char *)malloc(sizeof(char)*size+1))==NULL) return 1; 
    memset((*ret),0x0,sizeof(char)*size+1); 
 
    tmp=(*ret); 
 
    while(*src!='\0'){ 
 
        switch(*src){ 
 
 
            case '&'://     
                memcpy((*ret),basic_entities[0].entity,basic_entities[0].entitylen); 
                (*ret)+=basic_entities[0].entitylen; 
                break; 
 
            case '"'://    " 
 
                if((type==ENT_COMPAT)||(type=ENT_QUOTES)){ 
                    memcpy((*ret),basic_entities[1].entity,basic_entities[1].entitylen); 
                    (*ret)+=basic_entities[1].entitylen; 
                } 
                break; 
 
            case '\''://    ' 
 
                if((type!=ENT_COMPAT)||(type==ENT_QUOTES)){ 
                    memcpy((*ret),basic_entities[2].entity,basic_entities[2].entitylen); 
                    (*ret)+=basic_entities[2].entitylen; 
                } 
                break; 
 
            case '<'://    < 
 
                memcpy((*ret),basic_entities[3].entity,basic_entities[3].entitylen); 
                (*ret)+=basic_entities[3].entitylen; 
                break; 
 
            case '>'://    > 
 
                memcpy((*ret),basic_entities[4].entity,basic_entities[4].entitylen); 
                (*ret)+=basic_entities[4].entitylen; 
                break; 
 
            default: 
 
                *(*ret)=*src; 
                ++(*ret); 
 
        } 
 
        ++src; 
 
    } 
 
    (*ret)=tmp; 
    return 0; 
 
} 
 

º¯°æ»çÇ×


2004/01/08

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.