2011-11-23 4 views
0

특수 문자를 HTML 엔티티로 변환 한 다음 다시 원래 문자로 변환하려고합니다.HTML 엔티티가 PHP로 특수 문자로 돌아 가기

나는 htmlentities()을 사용한 다음 html_entity_decode()을 사용했습니다. 나에게 문제가 없지만 {}은 원래 문자로 돌아 가지 않으며 {}으로 남습니다.

지금 어떻게해야합니까?

$custom_header = htmlentities($custom_header); 
$custom_header = html_entity_decode($custom_header); 
+2

재생산 할 수 없습니다. http://codepad.org/EpUQzjrx이 동작을 보여주는 예제를 제공하십시오. – deceze

+0

잘 작동합니다. –

+0

내 $의 custom_header이

과 같이 <스크립트 유형 = "텍스트/자바 스크립트"> $ (문서) .ready (함수() { \t $ ("#의 left_side_custom_image"). 클릭 (함수() { \t \t 경고 ("HELLO"); \t }); });

Pritom

답변

2

아무도 문제를 복제 할 수 있지만, 여기에 간단한 str_replace하여 해결하는 직접적인 방법이있다 : 같은

내 코드 보인다.

$input = '<p><script type="text/javascript"> $(document).ready(function() &#123; $("#left_side_custom_image").click(function() &#123; alert("HELLO"); &#125;); &#125;); </script></p> '; 
$output = str_replace(array('&#123;', '&#125;'), array('{', '}'), $input); 

Demo

편집 (오른쪽 상단에있는 '소스'링크를 클릭) : 지금 문제를 참조을. 당신의 입력 문자열 인 경우 :

"&#123;hello}" 

htmlentities를 호출하면 출력이, 당신에게 문자열 &amp;는 나중에 &로 다시 디코딩

"&amp;#123;hello}" 

을 제공하는 &amp;&를 인코딩 :

"&#123;hello}" 

해결 방법은 html_entity_decode을 통해 다시 문자열을 전송하는 것입니다. 귀하의 엔티티를 디코딩하십시오.

$custom_header = "&#123;hello}"; 
$custom_header = htmlentities($custom_header); 

$custom_header = html_entity_decode($custom_header); 
echo html_entity_decode($custom_header); // Outputs {hello} 
+0

이 답변에 대한 당신,하지만 다른 캐릭터가 이번에는 나중에 포함되어 있다면? 이러한 문자 유형의 전체 대체 코드를 작성하려면 어떻게해야합니까? – Pritom

+1

@ user1044804 - 내 솔루션을 편집하여 가장 최근의 붙여 넣기에 대한 수정 사항을 추가했습니다. – nickb

+0

고마워요. 이제 제대로 작동합니다. – Pritom