2009-07-14 3 views
2

내가 다음을 수행 PHP 스크립트가 :PHP 변수 값에서 줄 바꿈 및 새 줄을 제거 하시겠습니까?

  • 가 file_get_contents를 사용()을 html 파일
  • 에코 JSON 개체

의 내용을 얻을 수있는 문제는 값이 file_get_contents에서 얻어진다 멀티 라인입니다. 올바른 JSON 형식으로 되려면 한 줄에 모두 있어야합니다. 예를 들어

PHP 파일 :

{ 
foo: "<p>Lorem ipsum dolor 
sit amet, consectetur 
adipiscing elit.</p>" 
} 

내 목표는 (값은 다음과 같이하는 결과 HTML 문서를 얻을 수 있습니다 : 같은

$some_json_value = file_get_contents("some_html_doc.html"); 

echo "{"; 
echo "\"foo\":\"$some_json_value\""; 
echo "}"; 

결과 HTML 문서 본다 한 줄, 세 개가 아님)

{ 
foo: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>" 
} 

어떻게이 작업을 수행 할 수 있습니다. 원본 html 문서가 한 줄이면 내용이 한 줄로 나타납니다. 그러나 나는 그 해결책을 피하려고 노력하고있다.

업데이트

문제는 제대로 대답했다. 다음은 완전한 작업 코드입니다.

$some_json_value = file_get_contents("some_html_doc.html"); 
$some_json_value = json_encode($some_json_value); // this line is the solution 

echo "{"; 
echo "\"foo\":\"$some_json_value\""; 
echo "}"; 

답변

5

당신에게 (예를 들어 큰 따옴표와 백 슬래시) 문제를 일으킬 수 행 구분 이외의 등이 아니라 단지 행 구분을 제거보다, 그것을 제대로 JSON을 인코딩하는 데 더 좋을 거라 문자가 있습니다. PHP> = 5.2의 경우에는 json_encode 함수가 내장되어 있으며 이전 버전의 PHP에서 사용할 수있는 라이브러리가 있습니다 (예 : http://abeautifulsite.net/notebook/71 참조)

+0

지금까지 최고의 답. +1 – ceejayoz

+0

그게 효과가! 원래의 질문에 해결책을 추가했습니다. – edt

+0

다음과 같이하면됩니다 : echo json_encode (array ('foo'=> $ some_json_value)); –

0

\ n 및 \ r을 모두 ""로 바꿀 수 있습니다. preg_replace을 확인하십시오.

+0

\ n 및 \ r을 제거하지 않으려 고합니다. – edt

+0

\ n이 개행 문자입니다. .. 당신의 주제가 진술하고 있습니다. preg_replace에 대한 호출과 동일한 원칙을 적용 할 수 있습니다. –

3

간단한 바꾸기 작업을 수행 하시겠습니까?

$content = str_replace(
    array("\r\n", "\n", "\r"), 
    '', 
    file_get_contents('some_html_doc.html') 
); 

그러나 더 나은 아이디어 당장 json_encode()을하는 것입니다;

$content = json_encode(file_get_contents('some_html_doc.html'));