X Tutup
The Wayback Machine - https://web.archive.org/web/20210902021458/https://github.com/programarivm/unicode-ranges
Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Unicode Ranges

Latest Stable Version Build Status Total Downloads License: GPL v3

Unicode Character Ranges

Unicode character ranges (or blocks) in a friendly object-oriented way for multiple purposes. See Unicode ranges.

Install

Via composer:

$ composer require programarivm/unicode-ranges

Examples

Instantiate a Unicode range

use UnicodeRanges\Range\AlchemicalSymbols;

$alchemicalSymbols = new AlchemicalSymbols;

echo "Name: {$alchemicalSymbols->name()}".PHP_EOL;
echo "Total: {$alchemicalSymbols->count()}".PHP_EOL;
echo "Range: {$alchemicalSymbols->range()[0]}-{$alchemicalSymbols->range()[1]}".PHP_EOL;

Output:

Name: Alchemical Symbols
Total: 128
Range: 1F700-1F77F

From decimal to Unicode

use UnicodeRanges\Converter;

$converter = new Converter();

$unicode = $converter->dec2unicode(926);

echo $unicode . PHP_EOL;

Output:

Ξ

From Unicode to decimal

use UnicodeRanges\Converter;

$converter = new Converter();

$dec = $converter->unicode2dec('Ξ');

echo $dec . PHP_EOL;

Output:

926

From Unicode to hexadecimal

use UnicodeRanges\Converter;

$converter = new Converter();

$hex = $converter->unicode2hex('Ξ');

echo $hex . PHP_EOL;

Output:

39E

From Unicode to character name

use UnicodeRanges\Converter;

$converter = new Converter();

$name = $converter->unicode2name('Ξ');

echo $name . PHP_EOL;

Output:

GREEK CAPITAL LETTER XI

From Unicode to UnicodeRanges\Range object

use UnicodeRanges\Converter;

$converter = new Converter();

$range = $converter->unicode2range('Ξ');

echo "Name: {$range->name()}".PHP_EOL;
echo "Total: {$range->count()}".PHP_EOL;
echo "Range: {$range->range()[0]}-{$range->range()[1]}".PHP_EOL;

Output:

Name: Greek and Coptic
Total: 144
Range: 0370-03FF

From range to table of characters

use UnicodeRanges\Converter;

$converter = new Converter();

$table = $converter->range2table(['2580', '259F']);

print_r($table);

Output:

Array
(
    [0] => ▀
    [1] => ▁
    [2] => ▂
    [3] => ▃
    [4] => ▄
    [5] => ▅
    [6] => ▆
    [7] => ▇
    [8] => █
    [9] => ▉
    [10] => ▊
    [11] => ▋
    [12] => ▌
    [13] => ▍
    [14] => ▎
    [15] => ▏
    [16] => ▐
    [17] => ░
    [18] => ▒
    [19] => ▓
    [20] => ▔
    [21] => ▕
    [22] => ▖
    [23] => ▗
    [24] => ▘
    [25] => ▙
    [26] => ▚
    [27] => ▛
    [28] => ▜
    [29] => ▝
    [30] => ▞
    [31] => ▟
)

A random Tibetan char

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Tibetan;

$randomizer = new Randomizer();

$char = $randomizer->char([
    new Tibetan,
]);

echo $char . PHP_EOL;

Output:

A random char using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\Balinese;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;
use UnicodeRanges\Range\Runic;

$randomizer = new Randomizer();

$char = $randomizer->char([
    new Arabic,
    new Balinese,
    new HangulJamo,
    new Phoenician,
    new Runic
]);

echo $char . PHP_EOL;

Output:

ڗ

A random letter using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;

$randomizer = new Randomizer();

$letter = $randomizer->letter([
    new Arabic,
    new HangulJamo,
    new Phoenician,
]);

echo $letter . PHP_EOL;

Output:

𐤇

A random number using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;

$randomizer = new Randomizer();

$number = $randomizer->number([
    new Arabic,
    new HangulJamo,
    new Phoenician,
]);

echo $number . PHP_EOL;

Output:

۳

A printable char using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;

$randomizer = new Randomizer();

$char = $randomizer->printableChar([
    new Arabic,
    new HangulJamo,
    new Phoenician,
]);

echo $char . PHP_EOL;

Output:

ڦ

Multiple random letters using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;

$randomizer = new Randomizer();

$letters = $randomizer->letters([
    new Arabic,
    new HangulJamo,
    new Phoenician,
], 20);

echo $letters . PHP_EOL;

Output:

𐤊볘ᇵᅿ𐤄𐤅ᆵᄣ𐤃ۑ𐤆ᄰᆡᇐᄋہ𐤅ټ𐤊

Multiple random numbers using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;

$randomizer = new Randomizer();

$numbers = $randomizer->numbers([
    new Arabic,
    new HangulJamo,
    new Phoenician,
], 20);

echo $numbers . PHP_EOL;

Output:

𐤖𐤛٢۷𐤘𐤚𐤘𐤙𐤖۸٣٥۴𐤗𐤖۹𐤛𐤘١

Multiple random printable chars using multiple ranges

use UnicodeRanges\Randomizer;
use UnicodeRanges\Range\Arabic;
use UnicodeRanges\Range\HangulJamo;
use UnicodeRanges\Range\Phoenician;

$randomizer = new Randomizer();

$chars = $randomizer->printableChars([
    new Arabic,
    new HangulJamo,
    new Phoenician,
], 20);

echo $chars . PHP_EOL;

Output:

ᄙئ𐤄ᄏجښڽᅴۈ𐤖؞كᅒڅ𐤌٩ښ𐤆ᆿآ

Frequency analysis of Unicode ranges

tests/AnalyzerTest.php

namespace UnicodeRanges\Tests;

use UnicodeRanges\Analyzer;
use PHPUnit\Framework\TestCase;

class AnalyzerTest extends TestCase
{
    /**
     * @test
     */
    public function freq()
    {
        $text = '律絕諸篇俱宇宙古今مليارات في мале,тъйжалнопе hola que tal como 토마토쥬스 estas tu hoy この平安朝の';
        $expected = [
            'Basic Latin' => 25,
            'Cyrillic' => 14,
            'CJK Unified Ideographs' => 12,
            'Arabic' => 9,
            'Hangul Syllables' => 5,
            'Hiragana' => 3,
        ];

        $this->assertEquals($expected, (new Analyzer($text))->freq());
    }

    /**
     * @test
     */
    public function most_freq()
    {
        $text = '律絕諸篇俱宇宙古今مليارات في мале,тъйжалнопе hola que tal como 토마토쥬스 estas tu hoy この平安朝の';

        $this->assertEquals('Basic Latin', (new Analyzer($text))->mostFreq());
    }
}

License

The GNU General Public License.

Contributions

Would you help make this library better? Contributions are welcome.

Many thanks.

About

Unicode character ranges (or blocks) in a friendly object-oriented way for multiple purposes.

Topics

Resources

License

Packages

No packages published

Languages

X Tutup