for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Onoi\Tesa;
/**
* @since 0.1
*
* @{
*/
// @codeCoverageIgnoreStart
define( 'ONOI_TESA_CHAR_EXAMINER_HIRAGANA_KATAKANA', 'ONOI_TESA_CHAR_EXAMINER_HIRAGANA_KATAKANA' );
define( 'ONOI_TESA_CHAR_EXAMINER_HANGUL', 'ONOI_TESA_CHAR_EXAMINER_HANGUL' );
define( 'ONOI_TESA_CHAR_EXAMINER_CHINESE', 'ONOI_TESA_CHAR_EXAMINER_CHINESE' );
// @codeCoverageIgnoreEnd
/**@}
* @license GNU GPL v2+
* @author mwjames
class CharacterExaminer {
* @see http://jrgraphix.net/research/unicode_blocks.php
* @param string $type
* @param string $text
* @return boolean
public static function contains( $type, $text ) {
if ( $type === ONOI_TESA_CHAR_EXAMINER_HIRAGANA_KATAKANA ) {
return preg_match('/[\x{3040}-\x{309F}]/u', $text ) > 0 || preg_match('/[\x{30A0}-\x{30FF}]/u', $text ) > 0; // isHiragana || isKatakana
}
if ( $type === ONOI_TESA_CHAR_EXAMINER_HANGUL ) {
return preg_match('/[\x{3130}-\x{318F}]/u', $text ) > 0 || preg_match('/[\x{AC00}-\x{D7AF}]/u', $text ) > 0;
if ( $type === ONOI_TESA_CHAR_EXAMINER_CHINESE ) {
return preg_match('/[\x{4e00}-\x{9fa5}]/u', $text ) > 0;