2017 © Pedro Peláez
 

library ustring

The Hoa\Ustring library.

image

hoa/ustring

The Hoa\Ustring library.

  • Tuesday, January 23, 2018
  • by Hoa
  • Repository
  • 16 Watchers
  • 123 Stars
  • 809,955 Installations
  • PHP
  • 9 Dependents
  • 0 Suggesters
  • 12 Forks
  • 5 Open issues
  • 15 Versions
  • 6 % Grown

The README.md

Hoa , (*1)


Build status Code coverage Packagist License , (*2)

Hoa is a modular, extensible and structured set of PHP libraries.
Moreover, Hoa aims at being a bridge between industrial and research worlds. , (*3)

Hoa\Ustring

Help on IRC Help on Gitter Documentation Board, (*4)

This library allows to manipulate UTF-8 strings easily with some search algorithms., (*5)

Learn more., (*6)

Installation

With Composer, to include this library into your dependencies, you need to require hoa/ustring:, (*7)

$ composer require hoa/ustring '~4.0'

For more installation procedures, please read the Source page., (*8)

Testing

Before running the test suites, the development dependencies must be installed:, (*9)

$ composer install

Then, to run all the test suites:, (*10)

$ vendor/bin/hoa test:run

For more information, please read the contributor guide., (*11)

Quick usage

We propose a quick overview of two usages: manipulate UTF-8 strings and one search algorithm., (*12)

Natural UTF-8 strings manipulation

The Hoa\Ustring\Ustring class allows to manipulate easily UTF-8 strings in a very natural way. This class implements the \ArrayAccess, \Countable and \IteratorAggregate interfaces. We will use the following examples:, (*13)

$french   = new Hoa\Ustring\Ustring('Je t\'aime');
$arabic   = new Hoa\Ustring\Ustring('أحبك');
$japanese = new Hoa\Ustring\Ustring('私はあなたを愛して');

To get the first character, we will do:, (*14)

var_dump(
    $french[0],  // string(1) "J"
    $arabic[0],  // string(2) "أ"
    $japanese[0] // string(3) "私"
);

And to get the last character, we will do [-1]. It supports unbounded (and modulo) indexes., (*15)

We note that it cares about text direction. Look at $arabic[0], it returns أ and not ك. To get the direction, we can use the Hoa\Ustring\Ustring::getDirection method (which call the Hoa\Ustring\Ustring::getCharDirection static method), it returns either Hoa\Ustring\Ustring::LTR (0) or Hoa\Ustring\Ustring::RTL (1):, (*16)

var_dump(
    $french->getDirection(),  // int(0)
    $arabic->getDirection(),  // int(1)
    $japanese->getDirection() // int(0)
);

Text direction is also important for the append, prepend, pad… methods on Hoa\Ustring\Ustring for example., (*17)

To get the length of a string, we can use the count function:, (*18)

var_dump(
    count($french),  // int(9)
    count($arabic),  // int(4)
    count($japanese) // int(9)
);

We are also able to iterate over the string:, (*19)

foreach ($arabic as $letter) {
    var_dump($letter);
}

/**
 * Will output:
 *     string(2) "أ"
 *     string(2) "ح"
 *     string(2) "ب"
 *     string(2) "ك"
 */

Again, text direction is useful here. For $arabic, the iteration is done from right to left., (*20)

Some static methods are helpful, such as fromCode, toCode or isUtf8 on Hoa\Ustring\Ustring:, (*21)

var_dump(
    Hoa\Ustring\Ustring::fromCode(0x1a9), // string(2) "Ʃ"
    Hoa\Ustring\Ustring::toCode('Ʃ'),     // int(425) == 0x1a9
    Hoa\Ustring\Ustring::isUtf8('Ʃ')      // bool(true)
);

We can also transform any text into ASCII:, (*22)

$emoji = new Hoa\Ustring\Ustring('I ❤ Unicode');
$maths = new Hoa\Ustring\Ustring('∀ i ∈ ℕ');

echo
    $emoji->toAscii(), "\n",
    $maths->toAscii(), "\n";

/**
 * Will output:
 *     I (heavy black heart) Unicode
 *     (for all) i (element of) N
 */

Search algorithm

The Hoa\Ustring\Search implements search algorithms on strings., (*23)

For example, the Hoa\Ustring\Search::approximated method make a search by approximated patterns (with k differences based upon the principle diagonal monotony). If we search the word GATAA in CAGATAAGAGAA with 1 difference, we will do:, (*24)

$search = Hoa\Ustring\Search::approximated(
    $haystack = 'CAGATAAGAGAA',
    $needle   = 'GATAA',
    $k        = 1
);
$solutions = array();

foreach ($search as $pos) {
    $solutions[] = substr($haystack, $pos['i'], $pos['l']);
}

We will found AGATA, GATAA, ATAAG and GAGAA., (*25)

The result is not very handy but the algorithm is much optimized and found many applications., (*26)

Documentation

The hack book of Hoa\Ustring contains detailed information about how to use this library and how it works., (*27)

To generate the documentation locally, execute the following commands:, (*28)

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

More documentation can be found on the project's website: hoa-project.net., (*29)

Getting help

There are mainly two ways to get help:, (*30)

Contribution

Do you want to contribute? Thanks! A detailed contributor guide explains everything you need to know., (*31)

License

Hoa is under the New BSD License (BSD-3-Clause). Please, see LICENSE for details., (*32)

The Versions

23/01 2018

dev-master

9999999-dev https://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

16/01 2017

4.17.01.16

4.17.01.16 https://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

11/01 2016

4.16.01.11

4.16.01.11 http://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

09/11 2015

3.15.11.09

3.15.11.09 http://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

03/08 2015

3.15.08.03

3.15.08.03 http://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

28/07 2015

3.15.07.28

3.15.07.28 http://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

29/05 2015

3.15.05.29

3.15.05.29 http://hoa-project.net/

The Hoa\Ustring library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

25/03 2015

2.15.03.25

2.15.03.25 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

19/02 2015

2.15.02.19

2.15.02.19 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library search string unicode

24/12 2014

2.14.12.24

2.14.12.24 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

library search string unicode

09/12 2014

2.14.12.10

2.14.12.10 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

library search string unicode

05/10 2014

2.14.11.09

2.14.11.09 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

library search string unicode

23/09 2014

2.14.09.23

2.14.09.23 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

library search string unicode

17/09 2014

2.14.09.16

2.14.09.16 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

library search string unicode

16/09 2014

1.14.09.16

1.14.09.16 http://hoa-project.net/

The Hoa\String library.

  Sources   Download

BSD-3-Clause

The Requires

 

library search string unicode