2010-04-14 2 views
2

MySQL과 PHP를 사용하여 사이트의 일부분을 채 웁니다. 종종 HTML이 TEXT 필드에 저장됩니다. 나는 소스가 단정하고 쉽게 읽을 수 있도록 예를 들어, 들여 쓰기 내 HTML을 유지하려면 :MySQL에서 HTML을 삽입 할 때 들여 쓰기 유지

<body> 
    <div> 
<p>Blahblahblah</p> 
    </div> 
</body> 

다음 HTML이 MySQL의에서 가져온 경우

<body> 
    <div> 
     <p>Blahblah</p> 
    </div> 
</body> 

그러나, 나는이와 끝까지 많은 양의 HTML이 삽입되어있는 DIV에 삽입 될 때 이것은 상당히 추악합니다. 어떻게 이런 일이 일어나지 않게 할 수 있습니까? 참고로, 저는 각 줄을 너무 길게하지 않기 위해 wordwrap()을 사용합니다.

+1

왜 HTML 소스가 어떻게 보입니까? 아무도 당신의 HTML이 모두 들여 쓰기가 깔끔하게 들여 쓰기가 쉽지 않다는 것을 알 수 없을 것이며, 디버깅을 위해서 validator, tidy 그리고 당신이 선호하는 브라우저의 웹 개발자 도구가 있습니다. 시간을 낭비하지 마십시오. – Tomalak

+0

코드를 읽을 수 있으면 디버깅이 더 쉽습니다. 시간 서식 지정에 많은 시간을 소비하지는 않겠지 만, 모든 것이 하나의 연속 선상에 있다면, 읽는 것이 엉망입니다. 깔끔하게 도움을 줄 수 있습니다. – JYelton

+1

@Tomalak 그래서 Stack Overflow 시스템이 코드 블록의 공백을 보존하는 것이 중요하지 않다는 것을 말하는 것입니까? –

답변

2

당신은 PHP와 수동 라인을 들여 수 있습니다 : 당신이 들여 얻을 수있는 첫 번째 줄을 원하지 않는 경우

$tabs = 4; 
echo str_repeat(chr(9), $tabs) . str_replace(chr(10), chr(10) . str_repeat(chr(9), $tabs), $text); 

당신은 또한 첫번째 str_repeat(chr(9), $tabs) .을 제거 할 수 있습니다.

+1

Brilliant! 먼저 $ word를 wordwrap()을 통해 전달한 다음 솔루션을 통해 전달하고 마지막으로 $ 텍스트를 DIV에 에코하여 원하는 작업을 수행했습니다. 위에 논쟁하고 있던 사람들에 관해서는, 왜 이것을하지 않습니까? 그것은 나를 행복하게한다 LOL 고마워, Dragory! – Benjamin

0

데이터베이스에 HTML을 저장하는 데이터 유형은 무엇입니까? 나는 당신이 VARCHAR를 사용하고 있다고 의심하지만, BLOB가 더 좋을 것이다.

간단한 수정은 HTML에서 탭 대신 공백을 사용하는 것입니다. 데이터베이스가 \ t 문자를 무시하고있는 것 같습니다.