PHP 7 유니코드 코드포인트 이스케이프 구문이란?
PHP 7은 16진수 형태의 유니코드 코드포인트를 입력받아, 큰따옴표(" ")로 묶인 문자열 안에서 해당하는 UTF-8 문자로 변환해 출력합니다. 16진수 자릿수는 2자리, 4자리, 6자리 그 이상 등 어떤 조합이든 가능하며, 별도의 함수를 호출하지 않고도 큰따옴표 문자열이나 heredoc 문법만으로 유니코드 문자를 손쉽게 작성할 수 있습니다. 참고로 16진수 표기에서 맨 앞의 0(선행 제로)은 생략해도 무방합니다.
<html>
<head>
<title>UTF-8 Character </title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
</html>
참고: "\u{xxx}" 구문을 사용하면 유니코드 문자 전체를 간단하게 만들어낼 수 있습니다.
텍스트 방향 반전(Right-to-Left Override)
히브리어나 아랍어처럼 일부 언어는 왼쪽에서 오른쪽이 아니라 오른쪽에서 왼쪽으로 읽습니다. 이럴 때 U+202E 유니코드 문자(Right-to-Left Override)를 활용하면 텍스트의 표시 방향을 반대로 뒤집을 수 있습니다.
예제
<?php
echo "\u{202E} show reversed text";
echo "\u{202D}";
?>
출력 결과
위 코드를 실행하면 텍스트가 다음과 같이 거꾸로 표시됩니다.
txet desrever wohs
유니코드 코드포인트 이스케이프 구문 예제
<html>
<head>
<title>Tutorialpoint : Unicode codepoint escape syntax</title>
</head>
<body>
<?php
echo "\u{aaa}";
echo "\u{0000aaa}";
echo "\u{9999}";
?>
</body>
</html>
출력 결과
위 프로그램의 실행 결과는 다음과 같습니다.
પપ香
"\u{aaa}"와 "\u{0000aaa}"처럼 선행 0의 유무와 관계없이 동일한 문자가 출력되는 점도 확인할 수 있습니다.
PHP 7에서 한결 쉬워진 문자 이스케이프
PHP 7에서는 이전 버전에 비해 문자 이스케이프 처리가 훨씬 간편해졌습니다. 복잡한 과정 없이도 문자열 안에 유니코드 문자를 자유롭게 포함시킬 수 있습니다.
예제
<?php
echo 'You owe me £500.';
?>
출력 결과
You owe me £500.
위 예제에는 알파벳 A~Z와 숫자 0~9 같은 표준 문자 외에 파운드 기호(£)라는 특수 문자가 함께 사용되었습니다. 구버전 PHP에서는 이런 종류의 문자를 반드시 이스케이프 처리해야 했습니다. 그렇지 않으면 문자열 안에 해당 문자의 코드 값인 163이 그대로 삽입되어 "163300"처럼 엉뚱한 결과가 출력되는 문제가 발생할 수 있었습니다. 즉, 예전 버전에서는 파운드 기호를 반드시 이스케이프해야 했으며, 그렇지 않으면 출력 과정에서 오류가 생길 위험이 있었습니다.