PHPackages                             alvin0319/josa-extension - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. alvin0319/josa-extension

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

alvin0319/josa-extension
========================

Josa extension for Korean language.

1.0.0(2y ago)01MITPHPPHP &gt;=8.2

Since Nov 11Pushed 1y ago1 watchersCompare

[ Source](https://github.com/alvin0319/JosaExtension)[ Packagist](https://packagist.org/packages/alvin0319/josa-extension)[ RSS](/packages/alvin0319-josa-extension/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (3)Versions (2)Used By (0)

JosaExtension
=============

[](#josaextension)

받침에 따라 조사(은, 는, 이, 가, 을, 를 등)를 교정할 수 있는 sprintf와 유사한 함수를 제공합니다.

[원작자](https://github.com/b1uec0in)

[Java 버전 레포](https://github.com/b1uec0in/JosaFormatter/)

설치
==

[](#설치)

### Requirements

[](#requirements)

- PHP: 8.2 이상
- ext-mbstring: \*

다음 명령어를 사용하여 [Composer](https://getcomposer.org)를 통해 라이브러리를 설치합니다.

```
composer require alvin0319/josa-extension
```

사용법
===

[](#사용법)

```
use alvin0319\JosaExtension\JosaFormatter;

echo JosaFormatter::formatString("%s을 %s로 바꿔볼게요!", "PHP", "Java") // Output: PHP를 Java로 바꿔볼게요!
```

#### 종성 감지기의 우선 순위

[](#종성-감지기의-우선-순위)

- 한글 (HangulJongSungDetector) : '홍길동'은
- 영문 대문자 약어 (EnglishCapitalJongSungDetector) : 'IBM'이(아이비엠이)
- 일반 영문 (EnglishJongSungDetector) : 'Google'을(구글을)
- 영문+숫자 (EnglishNumberJongSungDetector) : 'WD40'는(더블유디포티는) - 이렇게 읽는 경우는 드물어 기본으로는 등록되어 있지 않습니다. (예외 처리 참고)
- 영문+10이하 숫자 (EnglishNumberKorStyleJongSungDetector) : 'MP3'는(엠피쓰리는), 'WD40'은(더블유디사십은)
- 숫자 (NumberJongSungDetector) : '1'과 '2'는(일과 이는)
- 일본어 JapaneseJongSungDetector : 'あゆみ'는(아유미는)

#### 예외 처리

[](#예외-처리)

- 영문+숫자'는 경우 10 이하만 영어로 읽도록 되어 있습니다. 보통 'MP3'는 '엠피쓰리'로 읽지만, 'Office 2000'은 '오피스 이천'으로 읽습니다. 만약 '영문+숫자'를 항상 영어로 읽도록 하기 위해서는 직접 EnglishNumberJongSungDetector 를 등록해야 합니다.

```
use alvin0319\JosaExtension\JosaFormatter;

$formatter = new JosaFormatter([
    new HangulJongSungDetector(),
	new EnglishCapitalJongSungDetector(),
	new EnglishJongSungDetector(),
	new EnglishNumberJongSungDetector(),
	new EnglishNumberKoreanStyleJongSungDetector(),
	new NumberJongSungDetector(),
	new JapaneseJongSungDetector()
]);
JosaFormatter::setDefaultFormatter($formatter); // Optional
```

#### 읽기 규칙 추가하기

[](#읽기-규칙-추가하기)

- 읽기 규칙은 `JosaFormatter::addReadingRule()`을 통해 추가할 수 있습니다.
- '한글+숫자'인 경우 숫자는 한글로 읽도록 되어 있습니다. 하지만, 영어를 한글로 쓴 경우 숫자도 영어로 읽어야 해서 오동작하는 경우가 있습니다. 현재는 읽는 규칙을 직접 추가해줘서 영어로 간주하도록 할 수 있습니다.

```
use alvin0319\JosaExtension\JosaFormatter;

$formatter = JosaFormatter::getDefaultFormatter();
$formatter->addReadingRule('베타', 'beta');
$result = $formatter->format("%s을 구매하시겠습니까?", "베가 베타 3");
// 베가 베타 3를 구매하시겠습니까?

```

참고 자료
=====

[](#참고-자료)

- [Java 버전](https://github.com/b1uec0in/JosaFormatter/)
- 한국어 속 영어 읽기

- 한글 받침에 따라 '을/를' 구분

- 한글, 영어 받침 처리 (iOS)

- 한자를 한글로 변환

- suffix로 영어 단어 찾기

[http://www.litscape.com/word\_tools/ends\_with.php](http://www.litscape.com/word_tools/ends_with.php)

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 66.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

965d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b5d9de7a6ea1d9c660b318e77bbeae9b10f3ec18c8d6f48a7427da2b605b5b7d?d=identicon)[alvin0319](/maintainers/alvin0319)

---

Top Contributors

[![alvin0319](https://avatars.githubusercontent.com/u/32565818?v=4)](https://github.com/alvin0319 "alvin0319 (2 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/alvin0319-josa-extension/health.svg)

```
[![Health](https://phpackages.com/badges/alvin0319-josa-extension/health.svg)](https://phpackages.com/packages/alvin0319-josa-extension)
```

###  Alternatives

[splitbrain/php-qrcode

Minimalist SVG based QRCode Generator

2147.3k1](/packages/splitbrain-php-qrcode)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
