반응형
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); // "<a href="...">남가람북스</a>" // 화면에는 <a href="...">남가람북스</a> 그대로 보임 ?>
strip_tags()
- 태그를 제거
- 안의 텍스트만 살림
- 두 번째 인자로 허용 태그 지정 가능
htmlspecialchars()
- 태그를 글자로 표시
- < → < 등 엔티티화
- 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, 티스토리
반응형
'php' 카테고리의 다른 글
| PHP form + confirm + view — 3단계 폼 처리 완전 정리 (0) | 2026.06.11 |
|---|---|
| PHP 서버 함수 — 날짜 · 파일 · 디렉토리 · 리다이렉트 완전 정리 (0) | 2026.06.11 |
| PHP return · 변수 범위 · static · 문자열 함수 완전 정리 (0) | 2026.06.11 |
| PHP foreach · function · break · continue · require 완전 정리 (0) | 2026.06.11 |
| PHP 제어문 — if · switch · for · while · foreach 완전 정리 (0) | 2026.06.11 |
왕진 블로그

댓글