private static boolean isPrintableChar( char c ) {
        Character.UnicodeBlock block = Character.UnicodeBlock.of( c );
        return (!Character.isISOControl(c)) &&
                c != CHAR_UNDEFINED &&
                block != null &&
                block != Character.UnicodeBlock.SPECIALS;
    }
ctype extension
documentation: http://us1.php.net/manual/ru/book.ctype.php

 Notice: supports UNICODE
exts/jphp-zend-ext/src/main/java/org/develnext/jphp/zend/ext/standard/CTypeFunctions.java