2012-11-30 2 views
4

여기에 문제가 있습니다. 난 (가독성) 적절 user.php에서 HTML 요소 들여 경우 PHP json_encode html 요소에 불필요한 공백이 포함되어 있습니다.

ob_start(); 
include '../view/user.php'; 
$include = ob_get_clean(); 

echo json_encode(array(
"success" => true, 
"status" => "ok", 
"data" => $include)); 

user.php

<div> 
<h2 class='workspace-name'> 
<?php echo $name; ?> 
</h2> 
</div> 

문제

index.php

는 \의 \ r \ n를 t \ 많이있을 것입니다 t \ t. 제공된 경우 jquery.get을 사용하여 json dataType을 가져옵니다. 어떻게하면/r/t/n을 없앨 수 있습니까? 그것은 화면에 표시되지 않지만 나는 그것에 대해 기분이 들지 않습니다. 더 나은 해결책이 있습니까? 질문이 있으시면 언제든지이 부분을 수정하겠습니다. 덕분에

답변

5

str_replace()을 사용하여 문자를 바꾸지 않는 이유는 무엇입니까? 편집

"data" => str_replace(array("\n","\r","\t"),'',$include))); 

: 또는

"data" => str_replace(array("\n","\r","\t"),' ',$include))); 
+2

간단하고 regex 엔진을 호출 할 필요가 없습니다. 이것은 잘 작동합니다. – EmmanuelG

+0

이것은 실제로 나쁜 예입니다. ' 클릭 \ r \ n 여기'은 유효한 HTML이고 '여기를 클릭하십시오'라는 텍스트가있는 링크를 표시해야하지만 ' clickhere'로 바뀌 었습니다. 태그가 깨져서 텍스트가 한 단어가됩니다. –

+0

Eugh, 간단한 해결책은 HTML이이 형식이 아닌지 확인하는 것입니다. ../view/user.php를 통해 생성 된 것을 보면 HTML이 해당 형식이 아닌지 확인할 수 있습니다. 유효한 포인트를 만드는 동안, 공백의 포인트는 코드 출력에 영향을 미치지 않는다는 것입니다. –

0

이 이렇게 추한이지만 내가 어떻게 (이 지적에 대해 @Salman A와 감사)을 <a\thref='#'>Click\n\nHere</a>처럼 HTML을 처리 할 때 다음을 사용 그것 :

$html = str_replace("\t",'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',$html); 
$html = str_replace("\r\n",'<br />',$html); 

나는 더 나은 대답을 위해 이것을 따라갈 것이다. 정규식이 있어야합니다.

관련 문제