Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP

  1. PHP 배열에서 가장 긴 문자열 길이 구하는 방법

    PHP에서 배열에 포함된 여러 문자열 중 가장 긴 문자열의 길이를 구해야 하는 경우가 종종 있습니다. 이럴 때는 array_map 함수와 max 함수를 조합하면 아주 간단하게 해결할 수 있습니다.핵심 원리array_map(strlen, $array)를 사용하면 배열의 모든 요소에 대해 strlen 함수가 적용되어, 각 문자열의 길이로 이루어진 새로운 배열이 반환됩니다. 그다음 max 함수를 적용하면 해당 길이 배열 중 최댓값, 즉 가장 긴 문자열의 길이를 얻을 수 있습니다.기본 문법$max_len = max(array_map(str

  2. PHP에서 브라우저로부터 받은 HTTP 헤더를 표시하는 방법

    웹 애플리케이션을 개발하다 보면 디버깅이나 분석을 위해 브라우저(클라이언트)가 서버로 전송한 HTTP 요청 헤더를 직접 확인해야 하는 경우가 자주 있습니다. PHP에서는 이러한 헤더 정보를 간단하게 출력할 수 있는 몇 가지 방법이 있습니다.방법 1: $_SERVER 슈퍼 글로벌 변수 활용PHP는 요청 관련 정보를 $_SERVER 배열에 저장합니다. 아래 코드를 사용하면 서버가 받은 요청 정보를 확인할 수 있습니다.<?phpprint_r($_SERVER);?>이 배열에는 $_SERVER[REQUEST_METHOD], $_S

  3. PHP에서 XML 파일 내용을 출력하는 방법 총정리

    PHP에서 XML 파일을 출력하는 방법PHP에서는 래퍼(Wrapper)를 활용하면 HTTP URL을 마치 로컬 파일처럼 다룰 수 있습니다. 덕분에 원격 서버에 있는 XML 파일의 내용도 별도의 복잡한 처리 없이 간단히 가져와서 화면에 출력할 수 있습니다.대표적인 방법은 크게 세 가지로 정리할 수 있습니다.1. file_get_contents() 함수 사용file_get_contents() 함수는 URL의 전체 내용을 문자열로 가져오며, 이를 echo로 그대로 출력하면 됩니다. 가장 직관적이고 널리 쓰이는 방식입니다.$file = f

  4. PHP에서 AJAX로 파일 다운로드하기: 왜 권장되지 않으며 어떤 대안이 있을까?

    AJAX 기반 파일 다운로드는 좋은 선택일까?많은 개발자들이 AJAX를 이용해 파일을 다운로드하려고 시도하지만, 사실 이 방법은 권장되지 않습니다. AJAX는 응답 데이터를 JavaScript 내부에서 처리하도록 설계되어 있기 때문에, 브라우저가 자동으로 파일을 저장하도록 유도하는 데에는 적합하지 않습니다.대신 window.location 또는 document.location을 사용하는 것이 훨씬 효과적입니다. 이 방식은 브라우저 자체적으로 해당 URL로 이동하며, 서버에서 전송된 파일을 정상적으로 다운로드할 수 있게 해줍니다.wi

  5. PHP에서 ASCII를 UTF-8 인코딩으로 변환하는 방법

    현재 문자열의 인코딩이 ASCII임을 알고 있다면, PHP의 iconv 함수를 사용하여 간단하게 UTF-8로 변환할 수 있습니다. 원본 문자열을 iconv 함수의 매개변수로 전달하면 지정한 인코딩(UTF-8)으로 변환된 결과를 얻을 수 있습니다.iconv 함수를 사용한 변환 예제<?php    $str = ábrêcWtë;    echo Original :, ($str), PHP_EOL;    echo Plain :, i

  6. PHP에서 URL 디코딩하기: urldecode() 함수 사용법 완벽 정리

    PHP에서는 내장 함수인 urldecode()를 사용하여 인코딩된 URL을 손쉽게 디코딩할 수 있습니다. 이 함수는 퍼센트 인코딩(%20, %3A 등)으로 변환된 문자열을 원래의 형태로 되돌려 줍니다. urldecode() 함수의 문법 string urldecode($input) 이 함수는 단 하나의 매개변수를 받습니다. $input: 디코딩할 인코딩된 URL 문자열 디코딩이 성공적으로 완료되면 원래의 문자열을 반환하며, 실패 시에는 false를 반환합니다. 참고로 반대 동작을 수행하는 urlencode() 함수와 함께 자주 사

  7. PHP에서 이진 데이터로 이미지 재생성 및 표시하는 방법

    PHP에서는 데이터 URI(Data URI) 스킴을 활용하면 이미지 파일을 디스크에 따로 저장하지 않고도 이진 데이터(binary data)만으로 이미지를 다시 만들어 브라우저에 바로 표시할 수 있습니다. 핵심은 <img> 태그의 src 속성에 데이터 URI를 직접 지정하는 것으로, 이 방식은 이미지를 가공한 후 임시 파일로 저장할 필요가 없어 매우 효율적입니다. 데이터 URI의 기본 형식 data:[<MIME-type>][;charset="<encoding>"][;base64],&

  8. PHP에서 MS Word 파일 읽기·쓰기 완벽 가이드

    PHP로 MS Word 문서를 다루는 방법PHP 환경에서 Microsoft Word 문서(.doc, .docx)를 생성하거나 편집해야 하는 경우, 가장 먼저 떠올릴 수 있는 방법은 Windows의 COM 객체를 이용해 Office 자동화(Automation)를 구현하는 것입니다. 그러나 이 방식에는 중대한 제약과 위험이 따르므로, 실무에서는 다른 접근 방식을 권장합니다.Microsoft가 경고하는 COM 자동화의 문제점Microsoft는 공식적으로 서버 환경에서 Office 문서를 COM 객체로 자동화하는 것을 권장하지 않으며 지원

  9. PHP로 클라이언트 로케일을 감지하는 가장 쉬운 방법

    PHP 5.3.0 버전부터는 별도의 복잡한 파싱 작업 없이 $_SERVER[HTTP_ACCEPT_LANGUAGE] 변수를 로케일(locale) 값으로 손쉽게 변환할 수 있는 내장 기능을 제공합니다. 핵심은 바로 Locale::acceptFromHttp() 메서드입니다.예제 코드$locale = Locale::acceptFromHttp($_SERVER[HTTP_ACCEPT_LANGUAGE]); echo $locale;Locale::acceptFromHttp() 함수는 현재 요청의 언어 정보를 담고 있는 Accept-Language 헤

  10. PHP isset()과 !empty()의 차이점, 예제로 완벽히 이해하기

    PHP에서 변수를 다룰 때 isset()과 !empty()는 자주 혼동되는 함수입니다. 두 함수 모두 변수의 상태를 검사하지만, 판단 기준이 서로 다르기 때문에 상황에 맞게 선택하는 것이 중요합니다. 이 글에서는 두 함수의 동작 방식을 예제와 함께 살펴보고 차이점을 명확하게 정리해 드립니다. isset() 함수란? isset()은 변수가 설정(Set)되었는지, 즉 값이 할당되어 있고 그 값이 NULL이 아닌지를 확인합니다. 변수가 존재하고 NULL이 아닌 값을 가지고 있다면 TRUE를 반환합니다. 여기서 중요한 점은 (빈 문자열),

  11. PHP에서 memory_limit 확인 및 바이트 단위로 변환하는 방법

    PHP memory_limit란 무엇인가? memory_limit는 단일 PHP 스크립트가 사용할 수 있도록 허용된 서버 메모리의 최대 용량을 의미합니다. 이 값은 일반적으로 php.ini 설정 파일에 정의되어 있으며, ini_get() 함수나 phpinfo()를 통해 현재 환경의 설정값을 확인할 수 있습니다. 다만 memory_limit 값은 64M, 128K처럼 숫자와 단위 접미사가 결합된 문자열 형태이기 때문에, 메모리 임계값과 비교하려면 먼저 바이트 단위의 숫자로 변환해야 합니다. 단위 변환 규칙 M(Megabyte): 값

  12. PHP에서 비밀번호 암호화하기: SHA-256·SHA-512 해시 완벽 가이드

    왜 SHA-256 또는 SHA-512를 사용해야 할까?PHP 5.3.7 미만 버전에서 제공되는 Blowfish 알고리즘에는 알려진 보안 취약점이 존재합니다. 따라서 해당 버전 이하 환경에서는 SHA-256 또는 SHA-512 방식을 사용하는 것이 권장됩니다.두 방식 모두 Blowfish와 유사한 솔트(salt) 형식을 사용하며, 각각 $5$(SHA-256)와 $6$(SHA-512) 접두어로 구분됩니다. 또한 선택적인 rounds(라운드) 매개변수를 지정해 해싱 작업을 여러 번 반복 수행하도록 강제할 수 있어, 무차별 대입 공격에 대

  13. PHP Reflection API로 배열의 인수를 생성자에 전달하는 방법

    PHP에서는 Reflection API를 활용하면 배열에 담겨 있는 값들을 그대로 클래스 생성자의 인수로 전달할 수 있습니다. 이는 런타임에 동적으로 객체를 생성해야 하거나, 설정 파일·데이터베이스에서 가져온 배열 데이터를 기반으로 인스턴스를 만들어야 할 때 특히 유용합니다.ReflectionClass::newInstanceArgs 메서드Reflection API에서 제공하는 newInstanceArgs() 메서드를 사용하면 배열 형태의 인수를 생성자에 넘겨 새로운 클래스 인스턴스를 생성할 수 있습니다.메서드 시그니처는 다음과 같습

  14. PHP 문자열 접근 방식 비교: $string{0} vs $string[0]

    PHP에서 문자열의 특정 문자에 접근할 때 중괄호를 사용하는 $string{0} 문법은 PHP 5.5부터 공식적으로 폐지(deprecated)되었으며, PHP 7.0에서는 완전히 제거되어 더 이상 동작하지 않습니다. 따라서 대괄호를 사용하는 $string[0] 방식으로 작성하는 것이 강력하게 권장됩니다.요약하자면, 중괄호({})를 이용한 문자 접근 방식은 더 이상 유효하지 않으므로, 항상 대괄호([])를 사용해야 합니다.예제 코드$string = medium; echo $string{0}; // 폐지된 문법 - PHP 7 이후 오류

  15. PHP에서 정적 메서드를 인수로 전달하는 방법

    개요PHP에서 정적 메서드(Static Method)를 다른 함수의 인수로 전달하려면 is_callable 및 call_user_func에서 사용되는 것과 동일한 문법을 그대로 활용하면 됩니다. 이는 함수나 메서드를 문자열 형태의 콜백으로 참조하는 PHP의 표준적인 방식으로, 런타임에 동적으로 함수를 호출해야 할 때 매우 유용합니다.정적 메서드를 인수로 전달하는 기본적인 예제는 아래와 같습니다.예제<?php    function my_func() {    

  16. PDepend vs PHPMD vs PHP_CodeSniffer: 나에게 맞는 PHP 코드 품질 도구 선택 가이드

    PHP 프로젝트에서 코드 품질을 관리하려면 적절한 정적 분석 도구를 선택하는 것이 중요합니다. 이 글에서는 널리 사용되는 세 가지 도구인 PDepend, PHPMD, PHP_CodeSniffer의 특징과 용도를 살펴보고, 각각 어떤 상황에 적합한지 비교해 보겠습니다. PDepend – 소프트웨어 메트릭 기반 품질 측정 PDepend는 주어진 코드베이스로부터 다양한 소프트웨어 메트릭(품질 지표)을 생성하는 정적 분석 도구입니다. 순환 복잡도(Cyclomatic Complexity), 클래스 간 의존성, 상속 깊이 등 여러 지표를 계

  17. PHP로 ZIP 아카이브 내부의 단일 파일을 읽는 방법

    PHP에서 ZIP 아카이브 안의 특정 파일만 읽기PHP에서는 전체 압축 파일을 풀지 않고도 zip:// 스트림 래퍼를 활용해 ZIP 아카이브 내부에 있는 단일 파일의 내용을 직접 읽어올 수 있습니다. 이 방법은 압축 해제 과정 없이 필요한 파일 하나만 빠르게 확인해야 할 때 매우 유용합니다.코드 예제ZIP 아카이브 내의 단일 파일을 읽는 코드는 다음과 같습니다.$handle = fopen(zip://test.zip#test.txt, r); $result = ; while (!feof($handle)) { $result .=

  18. PHP의 fgets()와 fread() 함수, 정확한 차이점은 무엇일까?

    PHP의 fgets()와 fread() 함수 차이점 PHP에서 파일을 읽을 때 자주 사용되는 fgets() 함수는 한 줄씩 데이터를 읽으며, 개행 문자(newline)를 만나는 순간 읽기를 멈춥니다. <?php    $file = fopen("test.txt","r");    echo fgets($file);    fclose($file); ?> 위 코드는 test.txt라는 텍스트 파일을 읽기 모드(r)로 연 뒤, 파일의 시작 지점

  19. PHP에서 메모리 사용량 추적하기: memory_get_usage() 완벽 정리

    PHP에서 메모리 사용량 추적하기PHP에서는 memory_get_usage() 함수를 활용하면 스크립트의 메모리 사용량을 간편하게 추적할 수 있습니다. 흥미로운 점은 PHP가 필요할 때마다 개별 메모리 블록마다 운영체제 수준의 malloc 함수를 호출하지 않는다는 것입니다. 대신 한 번에 큰 덩어리의 시스템 메모리를 할당받은 후 내부적으로 관리하며, 환경 설정값을 통해 이 동작을 제어합니다.두 가지 유형의 메모리 사용량PHP에서 추적할 수 있는 메모리 사용량은 크게 두 가지로 구분됩니다.실제 사용량(real usage): PHP 엔

  20. php.ini에서 다른 .ini 설정 파일을 포함하는 방법

    php.ini에서 다른 .ini 파일을 포함할 수 있나요? 결론부터 말하자면, 메인 php.ini 파일 안에서 다른 .ini 파일을 직접 포함(include)하는 것은 불가능합니다. php.ini에는 별도의 include 지시문이 존재하지 않기 때문입니다. 대신, PHP를 컴파일할 때 아래 옵션을 추가하면 동일한 효과를 얻을 수 있습니다. --with-config-file-scan-dir=PATH 여기서 PATH는 PHP가 추가 설정 파일을 검색할 디렉터리 경로를 의미합니다. PHP가 시작될 때마다 기본 php.ini 파일을 읽는

Total 1286 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:41/65  20-컴퓨터/Page Goto:1 35 36 37 38 39 40 41 42 43 44 45 46 47