2012-03-11 3 views
0

원격 파일에서 일부 데이터를 읽는 중, 텍스트 파일에 특정 줄을 쓸 때까지 모든 것이 작동합니다. 내가 좋아하는 뭔가를 쓸 때 여기
문제는, 소녀의 골드 톤 'X'CZ 링소녀 & APOS된다;의 골드 톤 & APOS; X & APOS을; CZ 링 txt 파일.
위와 같이 텍스트를 유지하고 문자 코드는 표시하지 않고 실제 문자는 표시하지 않도록 txt 파일에 쓰는 방법은 무엇입니까?
샘플 코드입니다.txt 파일에 특수 문자 작성

$content_to_write = '<li class="category-top"><span class="top-span"><a class="category-top" href="'.$linktext.'.html">'.$productName.'</a></span></li>'."\r\n"; 
       fwrite($fp, $content_to_write); 
$linktext = "Girls-Goldtone-X-CZ-Ring"; 
$productName = "Girl's Goldtone 'X' CZ Ring"; 

위해서 var_dump

string '<li class="category-top"><span class="top-span"><a class="category-top" href="Stellar-Steed-Gallery-wrapped-Canvas-Art.html">&apos;Stellar Steed&apos; Gallery-wrapped Canvas Art</a></span></li> 

'(길이 = 195)

코드

   $productName =$linktext; 


       $linktext = str_replace(" ", "-", $linktext); 
       $delChar = substr($linktext, -1); 
       if($delChar == '.') 
       { 
        $linktext = substr($linktext, 0, -1); 
       } 

       $linktext = removeRepeated($linktext); 
       $linktext = remove_invalid_char($linktext); 
       $productName = html_entity_decode($productName); 
       $content_to_write = '<li class="category-top"><span class="top-span"><a class="category-top" href="'.$linktext.'.html">'.$productName.'</a></span></li>'."\r\n"; 
       var_dump($content_to_write); 
       fwrite($fp, utf8_encode($content_to_write)); 
+0

인코딩의 문제는 프로 버 블레이입니다. 출력을 볼 때 사용되는 .txt 파일에 쓸 때 사용되는 외부 파일에 사용되는 인코딩은 무엇입니까? –

답변

1

가 원격 파일의 데이터를 읽고 있다는을인가하고 그 다음 txt fi에 같은 것을 쓴다. 르? 위의 설명에 동의합니다. 인코딩 문제입니다. 다음 코드를 입력하십시오 :

$file = file_get_contents("messages.txt"); 
$file = mb_convert_encoding($file, 'HTML-ENTITIES', "UTF-8"); 
echo $file; 

브라우저에 응답을 회신하십시오. 적절하다고 판단되면 txt 파일에 응답을 작성하십시오. txt 파일이 UTF8로 인코딩되었는지 확인하십시오.

이것을 확인하십시오 : Write Special characters in a file.

+0

감사합니다. 그러나 문제를 해결하지 못했습니다. 나는 url에서 txt 파일을 읽은 다음 ** fgets **를 통해 임의의 줄을 읽는다.이 줄은 브라우저에서 올바르게 표시되지만 ** fwrite **를 통해이 줄을 txt에 쓸 때 모든 특수 문자가 망가진다. –

1

fwrite은 2 진 안전성을 제공합니다. 즉, 인코딩 작업을 수행하지 않고 파일에 직접 피드를 씁니다. 작성중인 $productName 변수가 이미 쓰기 전에 엔티티로 인코딩 된 것 같습니다. 먼저 변수 위에 html_entity_decode을 실행 해보십시오.

기본적으로 html_entity_decode은 작은 따옴표 (&apos;)를 사용하지 않습니다. 두 번째 매개 변수에 ENT_QUOTES 플래그를 설정해야합니다. 세 번째 매개 변수에 명시 적으로 인코딩을 지정하고자 할 수도 있습니다.

+0

죄송합니다. $ productName을 (를) 수정했습니다. 내 변수는 배열에서 값을 얻습니다. 나는 원격 파일에서 임의의 라인을 읽었다. 모든 것은 브라우저에서 잘 보이지만 txt에서는 문제가 여전히 존재합니다. –

+0

'html_entity_decode' 해봤습니까? 그것은 작동해야합니다. –

+0

예, 지금 약 2 일 동안 노력하고 있습니다. 하지만 아무것도 작동하는 것 같습니다. 거기에 플랫폼 문제 또는 일부 일이있다, 나는 승리 7 64 비트, WAMP입니다. 그것으로 어떤 일을해야만합니까. –