본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP 정렬 · 배열 조작 · 문자열 함수 완전 정리

by 왕진 2026. 6. 11.
반응형

 

 

Web Development · PHP

PHP 정렬 · 배열 조작 · 문자열 함수
완전 정리

sort 6종, push/pop/shift/unshift, merge/reverse, substr/trim/htmlspecialchars/mb_strlen
시작 배열과 문자열을 자유자재로

실전 PHP 코드는 대부분 배열을 정렬·조작하고 문자열을 가공한다. 이번 폴더에는 그 도구들이 한 번에 모여 있다 — 정렬 6가지, 배열 추가/제거 4쌍, 문자열 조작 6종.


용어 핵심 키워드
sort()값 오름차순 (인덱스 재정렬)
rsort()값 내림차순
asort()값 오름차순 (key 유지)
arsort()값 내림차순 (key 유지)
ksort()key 오름차순
krsort()key 내림차순
array_push끝에 추가
array_pop끝에서 제거
array_shift앞에서 제거
array_unshift앞에 추가
array_merge두 배열 합침 (우측 우선)
array_reverse순서 뒤집기
substr부분 문자열
str_replace문자열 치환
trim양쪽 공백 제거
strip_tagsHTML 태그 제거
htmlspecialchars< > & → 엔티티 (XSS 방어)
mb_strlen멀티바이트 글자 수

1 정렬 함수 6가지
함수 기준 방향 key 유지?
sort() 오름차순 X (0,1,2...로 재정렬)
rsort() 내림차순 X
asort() 오름차순 O
arsort() 내림차순 O
ksort() key 오름차순 O (당연)
krsort() key 내림차순 O
<?php $numbers = array(18, 7, 20, 5); sort($numbers); // 5, 7, 18, 20 (오름차순) rsort($numbers); // 20, 18, 7, 5 (내림차순) $sales = array("TV2"=>"1000", "TV1"=>"500", "RADIO1"=>"800"); asort($sales); // 값 오름차순 — TV1(500) → RADIO1(800) → TV2(1000) arsort($sales); // 값 내림차순 — TV2(1000) → ... ksort($sales); // key 오름차순 — RADIO1 → TV1 → TV2 krsort($sales); // key 내림차순 — TV2 → TV1 → RADIO1 ?>
sort()는 key를 새로 매긴다 — 연관배열("TV1" => 500)에 sort()를 쓰면 key가 사라지고 0,1,2...로 바뀐다. key를 살리고 싶으면 asort/arsort.

2 배열 추가/제거 4가지
<?php $data = array("사과", "귤", "감"); array_push($data, "없음", "수박"); // 끝에 추가 → [사과,귤,감,없음,수박] $last = array_pop($data); // 끝에서 제거 → "수박" 반환 array_unshift($data, "파파야", "키위"); // 앞에 추가 $first = array_shift($data); // 앞에서 제거 → "파파야" 반환 ?>
시각화 — 배열의 양 끝
unshift [ 사과 ] push
shift [ 사과 ] pop
함수 위치 동작 반환값
array_push 추가 새 길이
array_pop 제거 제거된 값
array_unshift 추가 새 길이
array_shift 제거 제거된 값

반응형
3 array_merge · array_reverse · list
<?php $data = array("TV1"=>"500", "TV2"=>"1000", "RADIO1"=>"800"); $add_data = array("TV1"=>"2000", "RADIO2"=>"600"); $result = array_merge($data, $add_data); // 같은 key 충돌 시 → 우측($add_data) 우선 // TV1: 500 → 2000 (덮어씀), TV2: 1000, RADIO1: 800, RADIO2: 600 (추가) $rev = array_reverse(array("A", "B", "C", "D", "E")); // [E, D, C, B, A] list($f0, $f1, $f2) = array("사과", "귤", "감"); // $f0="사과", $f1="귤", $f2="감" ?>
+ vs array_merge$a + $b좌측 우선 (29번 폴더에서 다룸), array_merge우측 우선. 섞어 쓰면 헷갈리니 기억해두기.

4 문자열 자르기/치환 — substr · str_replace
<?php $string = "ABCDEFGHIJKLMN"; $result = substr($string, 3, 5); // 인덱스 3부터 5글자 → "DEFGH" $html = '<font size="3">Hello!</font>'; $result = str_replace('size="3"', 'size="5"', $html); // → '<font size="5">Hello!</font>' ?>
함수 인자 동작
substr($str, $start) 시작 인덱스 그 위치부터 끝까지
substr($str, $start, $len) 시작 + 길이 그 위치부터 N글자
substr($str, -3) 음수 시작 끝에서 N번째부터
str_replace($old, $new, $str) 찾을값/바꿀값/원본 모든 매칭 치환

5 trim — 양쪽 공백 제거
<?php $string = " 1234567890 "; $result = trim($string); // "1234567890" // 형제 함수 ltrim($string); // 왼쪽만 — "1234567890 " rtrim($string); // 오른쪽만 — " 1234567890" // 특정 문자만 제거 trim("---hello---", "-"); // "hello" ?>

trim()은 기본적으로 공백·탭·개행(\n, \r, \t, \0)을 제거. 사용자 입력 받을 때 가장 먼저 거치는 함수다.


6 HTML 처리 — strip_tags · htmlspecialchars
<?php // strip_tags — 태그를 제거 (내부 텍스트만 남김) $s = '<a href="...">남가람북스</a><hr><br>'; strip_tags($s); // "남가람북스" // htmlspecialchars — 태그를 글자로 (이스케이프) $s = '<a href="...">남가람북스</a>'; htmlspecialchars($s, ENT_QUOTES); // "&lt;a href=&quot;...&quot;&gt;남가람북스&lt;/a&gt;" // 화면에는 <a href="...">남가람북스</a> 그대로 보임 ?>
strip_tags()
  • 태그를 제거
  • 안의 텍스트만 살림
  • 두 번째 인자로 허용 태그 지정 가능
htmlspecialchars()
  • 태그를 글자로 표시
  • < → &lt; 등 엔티티화
  • XSS 방어 필수 함수
※ XSS 방어 — 사용자 입력 출력 시 필수
  • 댓글, 게시판 본문 등 사용자가 쓴 내용을 화면에 표시할 때 반드시 htmlspecialchars()
  • 안 쓰면 누군가 <script>...</script>를 입력해서 다른 사용자의 브라우저에서 실행 가능
  • ENT_QUOTES — 큰따옴표/작은따옴표까지 모두 변환 (HTML 속성 안에 들어갈 때 안전)

7 mb_strlen — 한글 길이 정확히 세기
<?php $str = "안녕하세요."; // 6글자 (한글 5 + 마침표 1) strlen($str); // 16 — 바이트 단위 (UTF-8 한글 = 3바이트) mb_strlen($str); // 6 — 글자 수 ?>
📌 UTF-8에서 한글 1글자 = 3바이트. strlen()은 바이트, mb_strlen()은 글자 수. 사용자에게 보이는 글자 수를 세려면 항상 mb_* 계열.
일반 함수 멀티바이트 버전 용도
strlen mb_strlen 글자 수
substr mb_substr 부분 문자열
strtoupper mb_strtoupper 대문자 (영어만)
strpos mb_strpos 위치 찾기

8 핵심 한 줄 요약

PHP — SORT · ARRAY · STRING

값 정렬sort/rsort (key 재배치) · asort/arsort (key 유지)
key 정렬ksort / krsort
끝에서 ±array_push / array_pop
앞에서 ±array_unshift / array_shift
합치기array_merge — 우측 우선
뒤집기array_reverse
분해list($a, $b) = $arr
자르기substr($str, 시작, 길이)
치환str_replace(찾기, 바꾸기, 원본)
공백 제거trim / ltrim / rtrim
XSS 방어htmlspecialchars(값, ENT_QUOTES)
한글 길이mb_strlen — 바이트 X 글자 수

Tags

#PHP #sort #asort #ksort #arrayPush #arrayPop #arrayMerge #arrayReverse #substr #strReplace #trim #htmlspecialchars #mbStrlen #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, sort, asort, ksort, arrayPush, arrayPop, arrayMerge, arrayReverse, substr, strReplace, trim, htmlspecialchars, mbStrlen, 티스토리
반응형

댓글