홈페이지

PHP 파일을 include 또는 require 할 때  (BOM, Byte Order Mark) 문제가 발생하는 경우 - 공백 줄바뀜

초코몽몽 2025. 3. 26. 13:24
728x90

PHP 파일을 include 또는 require 할 때 (BOM, Byte Order Mark) 문제가 발생하는 경우는 주로 파일의 인코딩 설정 때문이에요. 이 문제를 해결하는 방법은 여러 가지가 있습니다.


🔹 해결 방법 1: UTF-8 BOM 제거하기

파일에 BOM(Byte Order Mark)이 포함되어 있으면 가 출력될 수 있어요.
해결 방법:

  1. VS Code, Notepad++, Sublime Text 같은 편집기로 PHP 파일을 열기
  2. 다른 이름으로 저장 (Save As) 선택
  3. 인코딩을 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

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."