PHP 파일을 include 또는 require 할 때  (BOM, Byte Order Mark) 문제가 발생하는 경우 - 공백 줄바뀜
PHP 파일을 include 또는 require 할 때 (BOM, Byte Order Mark) 문제가 발생하는 경우는 주로 파일의 인코딩 설정 때문이에요. 이 문제를 해결하는 방법은 여러 가지가 있습니다.
🔹 해결 방법 1: UTF-8 BOM 제거하기
파일에 BOM(Byte Order Mark)이 포함되어 있으면 가 출력될 수 있어요.
해결 방법:
- VS Code, Notepad++, Sublime Text 같은 편집기로 PHP 파일을 열기
- 다른 이름으로 저장 (Save As) 선택
- 인코딩을 UTF-8 (BOM 없음, UTF-8 without BOM)으로 설정 후 저장
🔹 해결 방법 2: ob_clean() 또는 trim() 사용하기
파일이 자동으로 BOM을 포함해 출력하는 경우, include 전에 출력 버퍼를 정리하는 방법이 있어요.
✅ ob_clean() 사용
ob_start();
include 'file.php';
ob_clean(); // 출력 버퍼 정리
이렇게 하면 file.php가 출력하는 불필요한 공백이나 BOM을 제거할 수 있어요.
✅ trim() 사용
include한 파일에 BOM이 포함되었을 때 이를 제거하려면 trim()을 활용할 수도 있어요.
echo trim(file_get_contents('file.php'));
하지만 include할 때는 file_get_contents()가 아니라 include()를 쓰는 게 일반적이라 ob_clean()이 더 효과적일 수 있어요.
🔹 해결 방법 3: header()를 사용하여 강제 설정
PHP의 header() 함수로 강제 인코딩을 설정하는 방법도 있어요.
header('Content-Type: text/html; charset=UTF-8');
include 'file.php';
하지만 BOM이 이미 포함된 경우엔 이 방법만으로는 해결되지 않을 수도 있어요.
🔹 해결 방법 4: PHP 파일 첫 줄 확인하기
만약 file.php에 BOM이 포함된 경우, include할 때 공백이 생길 수 있어요.
📌 확인할 부분:
- <?php 앞에 공백이나 줄바꿈이 있는지 확인하세요.
- <?php 전에 UTF-8 BOM이 들어가 있으면 제거해야 해요.
🔎 잘못된 예시
(여기 공백 또는 BOM)
<?php
echo "Hello";
✅ 올바른 예시
<?php
echo "Hello";
🔹 해결 방법 5: BOM 자동 제거 코드 추가
모든 include 파일에서 BOM을 자동으로 제거하는 코드를 index.php 또는 header.php 등에 추가할 수도 있어요.
function removeBOM($str) {
if (substr($str, 0, 3) === "\xEF\xBB\xBF") {
return substr($str, 3);
}
return $str;
}
$content = file_get_contents('file.php');
echo removeBOM($content);
✅ 결론
가장 확실한 방법은 파일 인코딩을 UTF-8 (BOM 없음)으로 변경하는 것이에요.
그래도 해결되지 않으면 ob_clean() 또는 trim()을 사용해 보세요. 🚀
html 파일에서 php파일이 인크루드 된 경우
removeBOM() 함수를 사용하려면 HTML 파일 안에 PHP 코드로 작성해야 해요.
✅ 방법 1: HTML 파일에서 PHP를 사용하여 BOM 제거
HTML 파일에서 PHP 파일을 include할 때 removeBOM()을 적용하는 방법이에요.
🔹 예제 (index.html 또는 .php 파일)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PHP Include Test</title>
</head>
<body>
<h1>Include PHP File</h1>
<?php
function removeBOM($content) {
if (substr($content, 0, 3) === "\xEF\xBB\xBF") {
return substr($content, 3);
}
return $content;
}
echo removeBOM(file_get_contents('file.php')); // file.php를 불러와서 BOM 제거 후 출력
?>
</body>
</html>
🚨 주의:
- file_get_contents('file.php')는 파일 내용을 가져오지만, PHP 코드를 실행하지 않음!
- include 'file.php';처럼 사용하면 PHP 코드가 실행되지만 BOM 제거를 적용하기 어려움.
- PHP 코드가 포함된 파일을 실행해야 한다면 방법 2를 사용하세요! ⬇⬇⬇
✅ 방법 2: PHP 파일을 실행하면서 BOM 제거
PHP 파일을 실행하면서 BOM을 제거하려면 ob_start()를 사용하면 돼요.
🔹 예제 (index.php 파일로 사용)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PHP Include Test</title>
</head>
<body>
<h1>Include PHP File</h1>
<?php
function removeBOM($content) {
if (substr($content, 0, 3) === "\xEF\xBB\xBF") {
return substr($content, 3);
}
return $content;
}
ob_start(); // 출력 버퍼 시작
include 'file.php'; // file.php 실행
$content = ob_get_clean(); // 출력된 내용 가져오기
echo removeBOM($content); // BOM 제거 후 출력
?>
</body>
</html>
🚀 이 방법은 include 'file.php';를 실행하면서 BOM을 제거하는 가장 확실한 방법!
✅ ob_start()와 ob_get_clean()을 사용하여 file.php 실행 내용을 받아와 BOM을 제거할 수 있음.
✅ include된 파일 내의 PHP 코드도 정상적으로 실행됨!
🎯 결론
- PHP 코드가 없는 단순한 텍스트라면 방법 1 (file_get_contents)
- PHP 코드가 실행되어야 한다면 방법 2 (ob_start + include + removeBOM)
💡 가장 확실한 해결책은 PHP 파일을 "UTF-8 (BOM 없음)"으로 저장하는 것!
그래도 해결이 안 되면 위 방법을 시도해 보세요! 😃
https://link.coupang.com/a/clgiGZ
쉽게 배우는 PHP 웹 프로그래밍 - 개발/OS/DB 기타 | 쿠팡
쿠팡에서 쉽게 배우는 PHP 웹 프로그래밍 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 개발/OS/DB 기타 제품도 바로 쿠팡에서 확인할 수 있습니다.
www.coupang.com
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."