웹개발/PHP

[PHP] 숫자, 문자열, 변수, URL 파라미터, 함수 by. 생활코딩

ruming 2021. 1. 24. 06:31

 

생활코딩 PHP 강의 영상을 바탕으로 PHP를 공부해보자.

 

사용된 함수

#strlen

#nl2br

#file_get_contents

 

 

생활코딩 - PHP 재생목록

1) 수업소개

 

이번 글에서는 5)php의 데이터 타입부터 8)함수의 활용까지 알아볼 것이다.

 

 

php의 데이터 타입

 

php는 어떤 데이터 타입을 지원하는가?

php 공식 문서에서 php가 제공하는 데이터 타입을 알 수 있다.

 

php 공식 문서

 


php와 숫자

 

 

php에서는 숫자를 integerfloat로 표현할 수 있다.

 

php에서 정수를 구현해보자.

<?php?>이 기본적인 php 형식이다.

페이지 상에 무언가를 보이고자 하려면 echo 혹은 print();를 사용해야 한다.

number.php

 

이제 127.0.0.1/number.php에 들어가면 1이 뜰 것이다.

 

 

127.0.0.1/number.php

 

페이지 소스를 열어보면 다음과 같이 나온다.

number.php의 소스코드

보는 바와 같이 <?php 이하의 내용이 나타나지 않는다.

 

print(1);로 써도 같은 결과가 나온다.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <body>
  <?php
    print(1);
  ?>
  </body>
</html>

 

 

더보기

echo나 print없이 1을 쓰면 어떻게 되는지 궁금해서 시도해 보았다.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <body>
  <?php
    1;
  ?>
  </body>
</html>

 

아무것도 나오지 않았다.

 

echo에서 연산자를 쓰면 어떻게 될까?

 

다음과 같이 입력했을 때 결과는 어떻게 될 것인가?

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <body>
  <?php
    echo 1+1;
  ?>
  </body>
</html>

 

2가 나온다.

 

페이지 소스코드에도 2라고 뜬다.

 

사칙연산 모두 같은 결과가 나온다.

2+1, 2-1, 2*1, 2/1의 결과가 페이지에 나타나게 된다.

 

더보기

그렇다면 연산자 자체를 나타나게 하려면 어떻게 해야 할까?

생각보다 간단했다.

echo "1+1"; 이라고 입력하면 1+1이 그대로 나타난다.

 

마찬가지로 print("1+1"); 이라고 입력해도 같은 결과가 나온다.

 

 

php 공식 문서에서 integer 부분에 들어가면 integer를 표현할 수 있는 기호가 나온다.

 php에서 변수를 표현하려면 $를 사용하는 것 같다.

그래서 변수에 숫자를 넣어 출력해보기로 했다.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <body>
  <?php
    $a = 1234;
    print('a');
  ?>
  </body>
</html>

위와 같이 코딩을 해봤는데 결과가 아래와 같았다.

 

아무래도 print('a');는 그냥 그 따옴표 안에 있는 것을 그대로 출력해주는 것 같다.

처음엔 print("a");로 해봤는데 오류가 났다.

 

php 변수 출력을 검색해 본 결과 그냥 $a로 출력하면 되는 것 같아 해봤다.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <body>
  <?php
    $a = 1234;
    print($a);
  ?>
  </body>
</html>

 

출력이 잘 되었다.

변수를 출력하려면 $a로 선언하고 $a로 출력하면 되는 것 같다.

그리고 다른 언어와 달리 int나 float 등으로 나눠져 있지 않다고 한다.

 


 

다음으로 php의 문자열에 대해 알아보자.

 

php와 문자열

 

 

#STRING

 

먼저 문자열을 표현하는 기호에는 single quoted(')double quoted(")가 있다.

예를 들어 문서 상에 어떤 문자를 표현하고자 할 때,

<?php 
  echo 'Hi PHP';
?>

이렇게 작은 따옴표 안에 표현하고자 하는 문자를 넣어 문서에 나타나게 할 수 있다.

큰 따옴표도 마찬가지다.

 

문자 표현

 

그런데 만약 문서 상에 작은 따옴표나 큰 따옴표를 표현하고자 할 때는 어떻게 해야 할까?

그럴 때는 아래와 같은 방법을 사용할 수 있다.

<?php
  echo 'Hi "PHP"';
?>

이렇게 작은 따옴표 안에 큰 따옴표를 넣어주면 다음과 같은 결과가 나온다.

 

큰 따옴표 표현

 

마찬가지로 큰 따옴표 안에 작은 따옴표를 넣어주면 작은 따옴표가 표시된다.

따옴표가 두 개가 아니라 하나라도 그대로 출력된다. 예)"PHP

 

그런데 만약 작은 따옴표와 큰 따옴표를 둘 다 출력하려면 어떻게 해야 할까?

"''"같은 방법은 오류가 난다.

 

따옴표는 문자의 시작과 끝을 나타내는 역할을 한다.

어떤 역할을 하는 문자 앞에 역슬래시(\)를 붙여주면 일시적으로 역할을 해제할 수 있다.

<?php
  echo 'Hi, "PHP"! I\'m human.';
?>

 

작은 따옴표를 출력

 

#concatenation operator

 

결합 연산자는 문자와 문자를 이어주는 역할을 한다.

기호는 .이다.

<?php
  echo "Hello, "."world";
?>

위와 같이 코딩을 하면 아래와 같은 결과가 나온다.

 

결합 연산자의 사용

 

#strlen

 

php에도 문자열의 길이를 알아내는 함수가 있다.

c언어에서도 자주 썼던 함수인데, 문자 그대로 strlen이다.

strlen("문자열"); 과 같은 방식으로 문자열의 길이를 알 수 있다.

 

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

 

문자열의 길이

이렇게 하면 문자열의 길이가 출력된다. 문자열은 공백 포함이다.

 

아까 배운 것을 응용해서 strlen: 13을 출력해보자.

<?php
  echo "strlen: ".strlen("Hello, world!");
?>

strlen이 함수이기 때문에 결합 연산자가 적용되는지 궁금했는데 출력이 된다.

 

 


다음으로 php의 변수에 대해서 알아보자.

 

php의 변수

 

 

#VARIABLE

 

php에서 변수 선언 기호는 $이고, 대소문자 구별을 한다.

그리고 변수의 타입을 정할 필요가 없다.

그 외 변수명에 대한 규칙이 있는데 그것은 아래 링크에 자세히 설명되어 있다.

 

php 변수에 대한 자세한 설명

 

 

변수를 실제로 사용해보자.

*atom 에디터에는 lorem을 입력하면 아무 의미 없는 문장이 나온다.

 

다음과 같이 아무 의미 없는 문자들의 나열 속에 특정한 단어가 군데군데 들어가 있다고 생각해보자.

<!DOCTYPE html>
<html>
  <body>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit,
    sed do eiusmod tempor incididunt ut labore et dolore
    magna aliqua. Ut enim ad minim veniam, quis nostrud 
    exercitation ullamco laboris nisi ut aliquip ex ea 
    commodo consequat. Duis aute irure dolor in 
    reprehenderit in voluptate velit esse cillum dolore eu
    fugiat nulla pariatur. Excepteur sint occaecat 
    cupidatat non proident, sunt in culpa qui officia 
    deserunt mollit anim id est laborum.
  </body>
</html>

 

그 단어가 변수로 지정되어 있지 않을 때, 단어를 교체하려면 그 단어를 일일히 찾아서 바꿔야 한다.

이것은 힘들고 비효율적이다.

 

그 단어를 변수로 지정한다면, 우리는 변수에 들어갈 문자를 바꾸는 것으로 손쉽게 여러 개의 단어를 바꿀 수 있다.

 

이것이 변수 사용의 목적이라고 할 수 있다.

 

다음과 같이 php 문서에서 문장 사이에 변수를 선언하고 단어를 넣어주었다.

<!DOCTYPE html>
<html>
  <body>
    <?php
      $name = "variable_test";
      echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      sed do eiusmod $name tempor incididunt ut labore et dolore
      magna aliqua. Ut enim ad minim veniam, quis nostrud
      exercitation $name ullamco laboris nisi ut aliquip ex ea
      commodo consequat. Duis aute $name irure dolor in
      reprehenderit in voluptate velit $name esse cillum dolore eu
      fugiat nulla pariatur. $name Excepteur sint occaecat
      cupidatat $name non proident, sunt in culpa qui officia
      deserunt mollit anim id est laborum.";
    ?>
  </body>
</html>

 

 

그랬더니 변수를 넣은 부분이 전부 variable_test로 변해서 나왔다.

 

 


php의 URL 파라미터

 

 

#URL PARAMETER

 

우리가 수많은 사람에게,

[예)안녕하세요 ~님]이라는 내용의 메일을 보내려고 한다면,

많은 사람들의 이름을 일일히 바꾸어 메일을 보내는 것은 힘든 일일 것이다.

 

URL parameter를 이용하면 주소의 파라미터를 바꾸는 것으로 손쉽게 이것을 해낼 수 있다.

 

<!DOCTYPE html>
<html>
  <body>
    안녕하세요, <?php echo $_GET['name']; ?>님.
    블로그에 오신 걸 환영합니다.
  </body>
</html>

위와 같이 입력하고, 127.0.0.1/파일이름.php?name=보내고자 하는 이름으로 들어가면 

이름이 바뀌어져 있을 것이다.

 

주소에서 ?이하의 부분이 파라미터이다.

위에서는 name=bangmunja가 파라미터이고, 여러 개를 넣고 싶으면 &로 연결해주면 된다.

 

<!DOCTYPE html>
<html>
  <body>
    안녕하세요, <?php echo $_GET['name']; ?>님.
    <?php echo $_GET['blog']; ?>블로그에 오신 걸 환영합니다.
  </body>
</html>

 

 

 


 

 

 

URL parameter의 활용

 

아래는 영상과 같이 코드를 짠 것이다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>WEB</h1>
    <ol>
      <li><a href="index.php?id=HTML">HTML</a></li>
      <li><a href="index.php?id=CSS">CSS</a></li>
      <li><a href="index.php?id=JavaScript">JavaScript</a></li>
    </ol>
    <h2>
      <?php
        echo $_GET['id'];
      ?>
    </h2>
    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    </p>
  </body>
</html>

 

각 리스트를 누르면 해당 리스트로 넘어가게 한 것이다.

 

index.php

 

리스트를 누르면 이동한다.

 

 


 

함수의 사용

 

#FUNTION

 

#nl2br

 

nl2br함수는 줄바꿈을 해주는 함수이다. 원래 웹에서는 <br>태그를 넣어야 줄바꿈이 된다.

nl2br함수를 이용하면 문자열에서 줄바꿈을 하면 줄바꿈이 적용이 된다.

 

실제로 사용해보자.

<!DOCTYPE html>
<html>
  <body>
    <?php
      $str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

      Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
      echo nl2br($str);
    ?>
  </body>
</html>

아무 의미 없는 텍스트 중간에 줄바꿈을 해보았다.

비교를 위해 nl2br함수를 사용하지 않고 출력을 한 결과를 넣겠다.

 

함수 사용 X
함수 사용

 

소스코드를 보면 br태그가 넣어져 있다.

소스코드

 


함수의 활용

 

#FUNTION

 

함수 중에 파일을 읽어 올 수 있는 함수가 있다.

그 함수를 이용해 위에서 만들었던 index.php를 더 발전시킬 것이다.

 

위에서는 각 리스트를 클릭했을 때 그 리스트가 나오도록 했는데, 이번에는 data 폴더를 만들어서

그 안에 각 리스트의 문서 내용을 저장한 후 리스트를 눌렀을 때 리스트의 이름과 함께 

각 리스트의 문서 내용이 나오도록 할 것이다.

 

먼저 data 폴더를 만든 후 HTML, CSS, JavaScript라는 이름의 파일을 만들어 문서 내용을 저장한다. 

 

그런데 CSS 파일에서는 왜인지 모르겠지만 lorem을 입력해도 적용이 안되서 그냥 텍스트를 복붙했다.

어차피 의미 없는 내용이므로 상관없다.

 

#file_get_contents

 

이제 index.php 파일을 수정해야 한다.

파일을 읽어오는 함수는 file_get_contents 이다.

 

php 공식 문서의 예제를 첨부한다.

 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>WEB</h1>
    <ol>
      <li><a href="index.php?id=HTML">HTML</a></li>
      <li><a href="index.php?id=CSS">CSS</a></li>
      <li><a href="index.php?id=JavaScript">JavaScript</a></li>
    </ol>
    <h2>
      <?php
        echo $_GET['id'];
      ?>
    </h2>
    <?php echo file_get_contents("data/".$_GET['id']); ?>
  </body>
</html>

*이 예제 코드는 보안문제를 전혀 고려하지 않은 것이기 때문에

실제 웹에서는 사용하면 안된다고 한다.

 

 echo file_get_contents("data/".$_GET['id']);

이렇게 하면 data 폴더에 있는 파일을 읽어 오는 것 같다.

 

HTML
CSS
JavaScript

 

왜 글이랑 h2 제목이 링크되는지 모르겠다. 

a링크를 안 닫아놓고 이러고 있었다..;;

 

지금까지 숫자부터 변수, URL parameter, 함수에 대해 알아봤다.

다음 포스팅에서는 Boolean과 조건문, 반복문, 배열의 형식에 대해 공부할 것이다.