2013-05-24 5 views
1

perl을 사용하여 HTML 특수 기호를 제거하려고합니다. 나는이 HTML :: Strip, Encode qw (_utf8_on)를 사용했다.perl을 사용하여 html의 특수 문자를 제거하십시오.

use Encode qw(_utf8_on); 
_utf8_on($string); 
print "$string\n\n"; 

Output: Clearance Subject Male control 5 1-a 21 31â ±â2 74 

use HTML::Strip; 
my $hs = HTML::Strip->new(); 
my $clean_text = $hs->parse($string); 
print "$clean_text\n"; 

Ouput: Clearance Subject Male control 5 1-a 21 31â ñâ2 74 

Expected output: Clearance Subject Male control 5 1-a 21 31±2 74 

어떤 사람이 나를 도울 수 있습니까? 사전에 모든

+0

내가'$ 어디에서 오는 string' 않습니다 볼 수 있습니까? –

+0

그래서''HTML :: Strip''은 제대로 작동하고 있습니다. 이 경우 스 니펫에서 제 외할 수 있습니다. 그러나 그 외에도 문자열에서 제거하고 싶은 것은 무엇입니까? 잘못된 UTF-8 문자입니까? – mzedeler

+0

$ string = "정리 제목 남성 제어 5 1-a 21 31Ã ¢ ÃÂ ± Â 2 74"; 이렇게하면 $ string이 선언되었습니다. –

답변

0

최초의

덕분에, _utf8_on를 사용하지 마십시오. 문자열을 디코드하려면 인코딩 decode_utf8 또는 내장 utf8::encode을 사용하십시오. (후자는 내부에서 작동합니다.)


이제 답변을드립니다.

이 (잠깐만있어, 내가 대답에 내 생각을 확인할 수 있습니다.) 당신은 (워드 프로세서 말하는대로) parse 원시 HTML을 전달해야

아니라 일부는 그것의 버전을 디코딩. 앞에 utf8::downgrade($string);을 추가하면 일부 오류가 감지되어 HTML :: Strip에서 거의 발생하지 않는 버그를 해결할 수 있습니다.

이 작업을 수행하고 원래 문자열이

...Clearance Subject Male control 5 1-a 21 31±2 74... 

을 사용하면 출력에 다음과 가야가 포함 된 HTML 문서 인 경우 :

...Clearance Subject Male control 5 1-a 21 31±2 74... 
관련 문제