ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. ¼³¸í
phpÀÇ htmlspecialschars ÂüÁ¶
¾î¶² ¹®ÀÚµéÀº HTML¿¡¼ Ưº°ÇÑ Á¤ÀǸ¦ °¡Áö±â¿¡, ±× Àǹ̸¦ º¸Á¸ÇÏ·Á¸é, HTML ¿£ÅÍÆ¼·Î Ç¥ÇöÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÀÌ·¯ÇÑ º¯È¯À» ¼öÇàÇÑ ¹®ÀÚ¿À» ¹ÝȯÇÕ´Ï´Ù; ÀÌ ¹ø¿ªÀº ¸ðµç À¥ ÇÁ·Î±×·¡¹Ö¿¡¼ ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ¸ðµç HTML ¹®ÀÚ ¿£ÅÍÆ¼¸¦ ¹ø¿ªÇØ¾ß ÇÑ´Ù¸é, ÀÌ ÇÔ¼ö ´ë½Å htmlentities()¸¦ »ç¿ëÇϽʽÿÀ.
ÀÌ ÇÔ¼ö·Î °Ô½ÃÆÇÀ̳ª ¹æ¸í·Ï µîÀÇ ÇÁ·Î±×·¥¿¡¼, HTMLÀ» Æ÷ÇÔÇÏ´Â »ç¿ëÀÚ ÀÔ·Â ÅØ½ºÆ®¸¦ ¸·À» ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃÀûÀÎ µÎ¹øÂ° ÀÎÀÚ quote_styleÀº ÀÛÀº µû¿ÈÇ¥¿Í Å« µû¿ÈÇ¥¸¦ ¾î¶»°Ô ó¸®ÇÒÁö °áÁ¤ÇÕ´Ï´Ù. ±âº» ¸ðµå´Â ÇÏÀ§ ȣȯ ¸ðµå ENT_COMPAT·Î, Å« µû¿ÈÇ¥¸¸ º¯È¯ÇÕ´Ï´Ù. ENT_QUOTES¸¦ ÁöÁ¤Çϸé ÀÛÀº µû¿ÈÇ¥¿Í Å« µû¿ÈÇ¥ µÑ ´Ù º¯È¯Çϰí, ENT_NOQUOTES¸¦ ÁöÁ¤Çϸé ÀÛÀº µû¿ÈÇ¥¿Í Å« µû¿ÈÇ¥ µÑ ´Ù º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù.
´ÙÀ½ ¹®ÀÚµéÀ» º¯¿ªÇÕ´Ï´Ù:
&'(¾ÚÆÛ»÷µå)´Â '&'°¡ µË´Ï´Ù.
'"'(Å« µû¿ÈÇ¥)´Â ENT_NOQUOTES¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ» ¶§ '"'°¡ µË´Ï´Ù.
'''(ÀÛÀº µû¿ÈÇ¥)´Â ENT_QUOTES¸¦ ÁöÁ¤ÇßÀ» ¶§¸¸ '''°¡ µË´Ï´Ù.
'<'(º¸´Ù ÀÛÀ½)´Â '<'°¡ µË´Ï´Ù.
'>'(º¸´Ù Å)´Â '>'°¡ µË´Ï´Ù. »ç¿ë¹æ¹ý
¾Æ·¡ÂüÁ¶ ÄÚµå#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[]={
{'&', "&", 5,0},
{'"', """,6,ENT_HTML_QUOTE_DOUBLE},
{'\'',"'",6,ENT_HTML_QUOTE_SINGLE},
{'<', "<", 4,0},
{'>', ">", 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;
}
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|