아래는 생년월일로 나이를 계산하는 함수입니다.

<?php
function calculateKoreanAge($birthDate) {
    // 생년월일을 DateTime 객체로 변환
    $birthDateTime = new DateTime($birthDate);
    $currentDateTime = new DateTime();

    // 연도 차이를 계산
    $age = $currentDateTime->format('Y') - $birthDateTime->format('Y');

    // 현재 연도에서 생일이 지났는지 확인
    if ($currentDateTime->format('m-d') < $birthDateTime->format('m-d')) {
        $age--;
    }

    return $age;
}

// 생년월일을 입력 받기 (예: '1990-05-15')
$birthDate = '1990-05-15';
$age = calculateKoreanAge($birthDate);
echo "만 나이: " . $age;
?>

생년월일을 datetime으로 변환을 해야 합니다.

$birthDateTime = new DateTime($birthDate);

생일이 지났는지 확인

if ($currentDateTime->format('m-d') < $birthDateTime->format('m-d')) {
    $age--;
}

 

'tech > PHP' 카테고리의 다른 글

PHP 디버깅. 에러 보이게 하는 방법  (0) 2024.07.02
자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
사용자 정의 함수에 값을 가져 오는 방법  (0) 2023.10.23
문자 변환, 변경, 치환  (0) 2023.10.22

PHP 개발을 하다 보면 다양한 에러와 문제를 만나게 됩니다. 이때, 에러 메시지를 정확히 보고 수정하는 것이 중요합니다. PHP는 기본적으로 에러 메시지를 숨기는 설정이 되어 있는 경우가 많기 때문에, 개발 환경에서 에러를 표시하도록 설정하는 방법을 알아보겠습니다.

1. php.ini 설정 파일 수정
PHP의 설정 파일인 php.ini를 수정하여 에러를 표시할 수 있습니다. 이 파일은 PHP가 설치된 디렉터리에 위치해 있습니다.
PHP가 설치된 디렉터리에서 php.ini 파일을 찾아 텍스트 에디터로 엽니다.
1.2.  display_errors 설정 변경

display_errors = On


display_errors 값을 On으로 설정하면 에러 메시지가 브라우저에 출력됩니다.
1.3. error_reporting 설정 변경

error_reporting = E_ALL

error_reporting 값을 E_ALL로 설정하면 모든 수준의 에러를 보고합니다.
2. PHP 코드 내에서 설정

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 에러를 발생시키는 코드 예시
echo $undefined_variable;
?>
 

 

'tech > PHP' 카테고리의 다른 글

생년 월일로 나이 계산  (0) 2024.07.09
자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
사용자 정의 함수에 값을 가져 오는 방법  (0) 2023.10.23
문자 변환, 변경, 치환  (0) 2023.10.22

$_SERVER는 개발 작업을 할 때 쓰이지 않는 곳이 없을 정도로 널리 사용되고 있는 PHP에서 정해진 예약 변수입니다.
print_r($_SERVER)이나 var_dump($_SERVER)를 해보시면 아시겠지만 배열 형태로 되어 있습니다.

  • $_SERVER['HTTP_HOST']
    도메인 부분에 대당 합니다.
    테스트 서버 도메인과 실서버 도메인이 다를 때 $_SERVER['HTTP_HOST']를 사용하면 실서버로 이전 했을 때 별도의 작업이 필요 없습니다.
  • $_SERVER['PHP_SELF']
    도메인 뒤에 경로 입니다.
    https://google.com/shop/product.php
  • $_SERVER['QUERY_STRING'] 
    쿼리스트링 부분 입니다.
    예)?stx=abcd
  • $_SERVER['REMOTE_ADDR']
    접속된 사용자의 공인 아이피입니다.
  • $_SERVER['DOCUMENT_ROOT']
    httpd.conf 에 설정된 웹서버의 루트 디렉토리입니다.

'tech > PHP' 카테고리의 다른 글

생년 월일로 나이 계산  (0) 2024.07.09
PHP 디버깅. 에러 보이게 하는 방법  (0) 2024.07.02
또 다른 조건문 switch  (1) 2023.10.25
사용자 정의 함수에 값을 가져 오는 방법  (0) 2023.10.23
문자 변환, 변경, 치환  (0) 2023.10.22

조건에 따라서 다른 실행이나 변수에 담는 여러가지 행위를 할 때 보통은 if를 사용하는 경우가 있습니다.
때에 따라서는 switch가 더 클린한 코드를 만들수 있습니다.

*if

if($condition){
	$res = 1;
}else{
	$res = 2;
}

*switch

switch($condition){
	case "1" : $res = "1"; breack;
	case "2" : $res = "2"; breack;
}

물론 if도 짧게 가능 합니다.

if($condition) $res = 1;
else $res = 2;

혹은 삼항 연산자도 가능합니다.

$res = ($condition) ? 1 : 2;

사용자 정의 함수에 값을 가져 오는 방법은 여러가지가 있습니다.

function inside(){
	$month = "12";
	return $month;
}

위의 사용자 정의 함수는 inside를 실행하면 12가 있습니다.

$prefix = "month : ";
function inside($prefix){
	$month = "12";
	return $prefix.$month;
}

인자 값으로 $prefix의 값을 넣을수 있습니다.
인자 값에는 문자열뿐만 아니라 배열도 가능 합니다.

$prefix = array("year", "month", "day");
function inside($prefix=array()){
	$month = "12";
	return $prefix[0].$month;
}

인자 값과는 별도로 글로벌로 가져 올려면 아래와 같습니다.

$prefix = "month : ";
function inside(){
	global $prefix;
    
	$month = "12";
	return $prefix.$month;
}

'tech > PHP' 카테고리의 다른 글

자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
문자 변환, 변경, 치환  (0) 2023.10.22
PHP의 데이터 타입(data type)  (0) 2023.10.20
자바스크립트에는 없는 PHP 연관 배열  (0) 2023.10.19

PHP에서 문자 변경이나 치환, 공백 처리 할 때 str_replace를 사용 합니다.

<?php
echo str_replace("world","Peter","Hello world!");
?>

실행을 하면 Hello world!가 Hello Peter로 변경되어 있습니다.

1. 스트링(String)

<php
$hello = "hello world";
$hello2 = 'hello world';
echo $hello;

싱글 쿼트, 더블 쿼트 모두 스트링 타입입니다.

2. 인티저(Integer)
음수와 0, 양수입니다.(-2,147,483,648~2,147,483,647)

$number = "12";
echo (int)$number;

(int)를 추가하면 int형으로 캐스팅 됩니다.(형변환)

3.플로트(Float)

$float = 11.2;

4. 불리언(Boolean)

$check = true;
$check = false;

5. 배열(Array)

$arrays = array();

6. 객체(Object)

$color = new color("black", "white");

7. NULL

$is_null = null;

자바스크립트에서는 연관 배열이 없기 때문에 배열은 index와 index의 값을 가질수 있습니다.

var shopping = ["bread", "milk", "cheese", "hummus", "noodles"];
console.log(shopping);

연관 배열 처럼 할려면 javaScript에서는 Object를 사용해야 합니다.


아래는 PHP 배열 입니다.

$association = array("val" => 1, "txt" => "연관배열");
$association = array(
	array("val" => 1, "txt" => "연관1"),
	array("val" => 2, "txt" => "연관2"),
);

 

'tech > PHP' 카테고리의 다른 글

문자 변환, 변경, 치환  (0) 2023.10.22
PHP의 데이터 타입(data type)  (0) 2023.10.20
글자 길이가 길 때 글자 줄이는 방법(...)  (0) 2023.10.18
filter_var 숫자(int) 체크  (0) 2023.10.16
특정 날짜의 요일 구하기  (0) 2023.10.07
$str = "글자가 깁니다.글자가 깁니다.글자가 깁니다.글자가 깁니다.글자가 깁니다.";
$s_all = mb_substr($str, 0, 30, 'utf-8');
$suffix = "...";
if(strlen($s_all) >= strlen($s_all)) $suffix = "";
echo $s_all.$suffix;

보통은 텍스트가 길 때 ... 처리를 하게 되는데, 가끔 PHP에서 해야 할 때가 있습니다.
이런 경우 사용하면 됩니다.

문자형인지 숫자형인지 체크하는 방법은 여러가지가 있습니다.

1. is_integer
2. is_int(1번의 alias)
3. filter_var

소개할 것은 filter_var 입니다.
filter_var는 int를 체크하는 용도뿐만이 아니라 filter를 이용해서 여러가지 사용법이 있습니다.
FLOAT 체크 : FILTER_VALIDATE_FLOAT
이메일 체크 : FILTER_VALIDATE_EMAIL
URL 체크 : FILTER_VALIDATE_URL
MAC 어드레스 체크 : FILTER_VALIDATE_MAC

이 외에도 몇 가지가 있습니다.
(참고 URL : https://www.php.net/manual/en/filter.filters.validate.php)

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT)!== false) {
    echo("Variable is an integer");
} else {
    echo("Variable is not an integer");
}
?>

*https://www.w3schools.com/php/filter_validate_int.asp

+ Recent posts