2014-12-31 5 views
2

이 질문에 대한 게시물이 너무 많습니다. 나는 모든 것을 다 통과했지만 예상대로 해결책을 얻지 못했습니다. XML의 특수 문자를 HTML 엔티티로 변환해야합니다.PHP를 사용하여 XML에서 특수 문자를 변환하는 방법?

내가 시도

<?php 
$xml="<test>This is a xml file which has special characters < > & in it</test>"; 
htmlspecialchars($xml, ENT_XML1, 'UTF-8');//it replaces xml tags too 
?> 

예상 출력 XML 문자열 :

<test>This is a xml file which has special characters &lt; $gt; &amp; in it</test> 
+0

$ test = iconv ('utf-8', 'ascii // TRANSLIT', $ xml); 이걸 시도해주세요 – Arun

+0

아니, 그건 잘 모르겠다. – vidhya

답변

1

는이 질문에 대한 많은 글이 있습니다. 나는 모든 것을 다 통과했지만 예상대로 해결책을 얻지 못했습니다.

예, 당신이 생각하는 주제는 잘 정의되어 있으며이 웹 사이트에서 이미 잘 다루고 있습니다. 그러나 이것은 하루 최고의 사용으로 일어나는 실수를 막을 수는 없습니다. 당신은 당신의 코드 예제에 쓰기

는 :

이 특수 문자

이있는 XML 파일입니다 그리고 당신은 다음과 같은 문자열을 제공 :

<test>This is a xml file which has special characters < > & in it</test> 

은 그러나 당신이 무엇을 쓰기 잘못된 것입니다. 이것은 이 아니며 이 아니기 때문에 XML 파일 인이 아닙니다.

이것이 처음 발생하는 실수입니다.

  1. :

    당신이 당신의 질문에이 다음 실수는 해당 문자열의 작은 분수, 즉이 세 문자를 적용 할이기는하지만 당신은 당신이 가지고있는 전체 문자열에 변환 기능을 적용한다는 것입니다 <

  2. > 54에서
  3. & 오프셋 (not need to become &gt; 기술적이 않음) 56 58 옵셋

그래서 대신 이이 부분에만 기능을 적용해야합니다. 그냥 전형적인 코드는 다음을 입증하기 위해, 당신은 "솔루션"로이 원하는 안,이 데모입니다 :이 예와

foreach ([58, 56, 54] as $offset) 
{ 
    $encoded = htmlspecialchars($xml[$offset], ENT_XML1, 'UTF-8'); 
    $xml = substr_replace($xml, $encoded, $offset, 1); 
} 

, 당신이 선택한 인코딩 기능은 모든 잘못이 아니었다, 그것은

<test>This is a xml file which has special characters &lt; &gt; &amp; in it</test> 

(.이 CDATA 섹션 <test><![CDATA[This is a xml file which has special characters < > & in it]]></test>의 활용 예를 들어 상상할 수있는 다른 방법입니다하지만 여기에 요점이 아니다)

모든 실수와 그러나

및 혼란 : 올바르게 요청 문자를 인코딩 이것은 창조한다, 그것 mu st는 Stackoverflow에 기존 Q가 없다는 것을 의미하지 않습니다. & 주제를 명확하게 다루는 자료.

당신이 볼 수 있듯이 많은 질문과 답변 목록이 있습니다. 첫 번째 분석에 따라 XML이 아닌 XML의 잘못된 점을 시각적으로 XML로 XML로 변환 할 수 있습니다. 그것을 고치기 위해 대부분. 당신은 다르게 작업을 수행 할 수 있습니다

tidy_repair_string($xml, ['input-xml' => 1, 'output-xml' => 1, 'wrap' => 0]); 

:

나는 개인적으로 당신이 당신의 경우에 찾고있는 일을 할 수있는 Tidy extension in PHP의 팬입니다. 위의 링크 된 질문을 참조하여 더 나은 검색어를 시작하고 다른 사람들이이 주제에 대해 질문하고 답변 한 내용을 확인하십시오.

+0

실제로 예제로, 나는 tat string을 xml로 언급했다. 나의 질문은 XML 파일의 특수 문자를 변환하는 방법이다. 나는 당신이 제안한 링크를 통해 갈 것이다. – vidhya

+0

나는' tidy_repair_string ($ xml, [ 'input-xml'=> 1, 'output-xml'=> 1, 'wrap'=> 0]); 그리고 예상대로 작동합니다. 정말 고맙습니다 – vidhya

관련 문제