2011-01-23 5 views
1

제목이 내 문제점을 설명합니다. php로 텍스트 파일을 구문 분석합니다. 이 파일은 내가 맥 텍스트 편집기로이 파일을 저장할 때 내가이다른 편집기로 저장할 때 구문 분석 동작이 다릅니다

$doc = new DOMDocument(); 
$doc->load($feed); 

같은 공급 정보에 액세스

http://www.google.com/calendar/feeds/example%40googlemail.com/public/full

공급 Google 캘린더에 URL을 포함하고 모든게 괜찮습니다. 내가 리눅스 나 맥에 정력으로 저장하면 하지만, 다음로드되는 URL은 백분율 기호가로 변환됩니다 것을

http://www.google.com/calendar/feeds/example%2540googlemail.com/public/full%0A

주 : %는 -> 25 %와 % 0A

에 lineending

이 URL을 사용하면 URL이 잘못되어 피드 정보에 액세스 할 때 오류가 발생합니다. vim으로 텍스트 파일을 저장하면 어떤 문제가 발생합니까? 부호화?

안부 베드로

답변

2

%0A는 개행 문자 인코딩된다. 즉, 편집자마다 줄 끝이 다릅니다 (TextEdit의 캐리지 리턴, vim의 줄 바꿈).

당신은 정력, CR 라인 엔딩을 쓰기 다음 명령을 사용하십시오 :

:set fileformat mac 
+0

감사합니다. 백분율 기호도 인코딩됩니다 (% 25). 어떻게 PHP 로이 적응할 수 있습니까? 뭔가 알고 있니? 어떤 인코딩이 이것입니까? –

+1

URL 인코딩입니다. 당신은'load()'에 전달하기 전에'urldecode()'를 시도 할 수 있습니다. – Amber

1

일반적으로 "Off"로 설정되어 php.ini 파일에서 매개 변수 "auto_detect_line_endings"이 있어야합니다. 이를 변경하면 문제가 해결 될 것입니다.

가능하지 않은 경우 입력 한 문서를로드 한 후 원치 않는 문자를 정리할 수 있습니다. PHP 함수 않는 str_replace()는 조금 더 빨리 정규 표현식 이상이 않는, 그래서 나는 당신의 사건을 위해 그것을 권하고 싶습니다 :

$mystring = str_replace(chr(10), "", $mystring); //remove carriage returns 
$mystring = str_replace(chr(13), "", $mystring); //remove carriage returns 

나는 DOM 어딘가에 더 효율적인 솔루션이 확신/LIBXML 라이브러리 , 그러나 나는 그것을 조사하지 않았다.

관련 문제