The Hoa\String library (deprecated by Hoa\Ustring).

Related tags

Miscellaneous String
Overview

Hoa

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

Hoa\String state

This library allows to manipulate UTF-8 strings easily with some search algorithms.

Warning

This library is deprecated, and doesn't support php >= 7 because of new reserved keyword string, please use Hoa\Ustring.

Installation

With Composer, to include this library into your dependencies, you need to require hoa/string:

{
    "require": {
        "hoa/string": "~2.0"
    }
}

Please, read the website to get more informations about how to install.

Quick usage

We propose a quick overview of two usages: manipulate UTF-8 strings and one search algorithm.

Natural UTF-8 strings manipulation

The Hoa\String\String 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:

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

To get the first character, we will do:

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.

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\String\String::getDirection method (which call the Hoa\String\String::getCharDirection static method), it returns either Hoa\String\String::LTR (0) or Hoa\String\String::RTL (1):

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\String\String for example.

To get the length of a string, we can use the count function:

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

We are also able to iterate over the string:

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.

Some static methods are helpful, such as fromCode, toCode or isUtf8 on Hoa\String\String:

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

We can also transform any text into ASCII:

$emoji = new Hoa\String\String('I ❤ Unicode');
$maths = new Hoa\String\String('∀ 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\String\Search implements search algorithms on strings.

For example, the Hoa\String\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:

$search = Hoa\String\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.

The result is not very handy but the algorithm is much optimized and found many applications.

Documentation

Different documentations can be found on the website: http://hoa-project.net/.

License

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

You might also like...
iOS passbook library for PHP 5.4+

PHP PASSBOOK LIBRARY What is Passbook? Passbook is an application in iOS that allows users to store coupons, boarding passes, event tickets, store car

Simple library that abstracts different metrics collectors. I find this necessary to have a consistent and simple metrics (functional) API that doesn't cause vendor lock-in.

Metrics Simple library that abstracts different metrics collectors. I find this necessary to have a consistent and simple metrics API that doesn't cau

Sslurp is a simple library which aims to make properly dealing with SSL in PHP suck less.

Sslurp v1.0 by Evan Coury Introduction Dealing with SSL properly in PHP is a pain in the ass and completely insecure by default. Sslurp aims to make i

FuelPHP Framework - Class and Namespace alias library

Fuel Alias Library for lazy class aliasing. Install Via Composer $ composer require fuelphp/alias Usage Within FuelPHP class aliases are used to provi

A framework agnostic PHP library to build chat bots
A framework agnostic PHP library to build chat bots

BotMan If you want to learn how to create reusable PHP packages yourself, take a look at my upcoming PHP Package Development video course. About BotMa

Lock library to provide serialized execution of PHP code.

Requirements | Installation | Usage | License and authors | Donations php-lock/lock This library helps executing critical code in concurrent situation

PHP Machine Learning library
PHP Machine Learning library

PHP-ML - Machine Learning library for PHP Fresh approach to Machine Learning in PHP. Algorithms, Cross Validation, Neural Network, Preprocessing, Feat

A framework agnostic, multi-gateway payment processing library for PHP 5.6+

Omnipay An easy to use, consistent payment processing library for PHP Omnipay is a payment processing library for PHP. It has been designed based on i

Comments
  • Extend Hoa\Ustring

    Extend Hoa\Ustring

    Fix https://github.com/hoaproject/String/issues/1 Should I add PHPDoc tag @deprecated on classes ?

    Feel free to rewrite my changes on the README, I'm not a good writer ;)

    enhancement 
    opened by Metalaka 1
Releases(2.16.01.11)
  • 2.16.01.11(Jan 11, 2016)

    • Quality: Run devtools:cs. (Ivan Enderlin, 2016-01-09T09:09:39+01:00)
    • Consistency: Use Hoa\Consistency. (Ivan Enderlin, 2015-12-08T21:55:50+01:00)
    Source code(tar.gz)
    Source code(zip)
  • 2.15.07.28(Jul 28, 2015)

    • Extend Hoa\Ustring and mark library as deprecated. (Metalaka, 2015-06-27T19:20:06+02:00)

    This library is deprecated! Use Hoa\Ustring instead, but do not be afraid, the API is strictly the same 😀.

    Source code(tar.gz)
    Source code(zip)
  • 2.15.05.29(May 29, 2015)

Owner
Hoa
Hoa ~is~ was a modular, extensible and structured set of PHP libraries. The project is now archived. Thanks for all the fish!
Hoa
The SensioLabs DeprecationDetector runs a static code analysis against your project's source code to find usages of deprecated methods, classes and interfaces

SensioLabs DeprecationDetector CAUTION: This package is abandoned and will no longer receive any updates. The SensioLabs DeprecationDetector runs a st

QOSSMIC GmbH 389 Nov 24, 2022
Analyzer of PHP code to search issues with deprecated functionality in newer interpreter versions.

PhpDeprecationDetector PhpDeprecationDetector - analyzer of PHP code to search usages of deprecated functionality in newer interpreter versions - depr

Sergey 312 Dec 26, 2022
Dobren Dragojević 6 Jun 11, 2023
:date: The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects

sabre/vobject The VObject library allows you to easily parse and manipulate iCalendar and vCard objects using PHP. The goal of the VObject library is

sabre.io 532 Dec 25, 2022
Small convention based CQRS library for PHP

LiteCQRS for PHP Small naming-convention based CQRS library for PHP (loosely based on LiteCQRS for C#) that relies on the MessageBus, Command, EventSo

Benjamin Eberlei 560 Nov 20, 2022
Experimental library for forking PHP

Spork: PHP on a Fork <?php $manager = new Spork\ProcessManager(); $manager->fork(function() { // do something in another process! return 'Hel

Kris Wallsmith 588 Nov 20, 2022
Collection pipeline library for PHP

Knapsack Collection pipeline library for PHP Knapsack is a collection library for PHP >= 5.6 that implements most of the sequence operations proposed

Dušan Kasan 540 Dec 17, 2022
Easy to use utility functions for everyday PHP projects. This is a port of the Lodash JS library to PHP

Lodash-PHP Lodash-PHP is a port of the Lodash JS library to PHP. It is a set of easy to use utility functions for everyday PHP projects. Lodash-PHP tr

Lodash PHP 474 Dec 31, 2022
A PHP library to play with the Raspberry PI's GPIO pins

php-gpio php-gpio is a simple PHP library to play with the Raspberry PI's GPIO pins. It provides simple tools such as reading & writing to pins. [UPDA

Ronan Guilloux 266 Oct 17, 2022
PHP library for dealing with European VAT

ibericode/vat This is a simple PHP library to help you deal with Europe's VAT rules. Fetch VAT rates for any EU member state using ibericode/vat-rates

ibericode 389 Dec 31, 2022