便携式 ASCII 库 - 为 PHP 优化的性能 (ascii) 字符串函数。
It is written in PHP (PHP 7+) and can work without "mbstring", "iconv" or any other extra encoding php-extension on your server.
The benefit of Portable ASCII is that it is easy to use, easy to bundle.
The project based on ...
If you like a more Object Oriented Way to edit strings, then you can take a look at voku/Stringy, it's a fork of "danielstjules/Stringy" but it used the "Portable ASCII"-Class and some extra methods.
// Portable ASCII
use voku\helper\ASCII;
ASCII::to_transliterate('déjà σσς iıii'); // 'deja sss iiii'
// voku/Stringy
use Stringy\Stringy as S;
$stringy = S::create('déjà σσς iıii');
$stringy->toTransliterate(); // 'deja sss iiii'
composer require voku/portable-ascii
I need ASCII char handling in different classes and before I added this functions into "Portable UTF-8", but this repo is more modular and portable, because it has no dependencies.
Example: ASCII::to_ascii()
echo ASCII::to_ascii('�Düsseldorf�', 'de');
// will output
// Duesseldorf
echo ASCII::to_ascii('�Düsseldorf�', 'en');
// will output
// Dusseldorf
The API from the "ASCII"-Class is written as small static methods.
charsArray charsArrayWithMultiLanguageValues charsArrayWithOneLanguage charsArrayWithSingleLanguageValues
clean getAllLanguages is_ascii normalize_msword
normalize_whitespace remove_invisible_characters to_ascii to_ascii_remap
to_filename to_slugify to_transliterate
↑ Returns an replacement array for ASCII methods.
EXAMPLE: $array = ASCII::charsArray(); var_dump($array['ru']['б']); // 'b'
Parameters:
bool $replace_extra_symbols [optional] Add some more replacements e.g. "£" with " pound ". Return:
array↑ Returns an replacement array for ASCII methods with a mix of multiple languages.
EXAMPLE: $array = ASCII::charsArrayWithMultiLanguageValues(); var_dump($array['b']); // ['β', 'б', 'ဗ', 'ბ', 'ب']
Parameters:
bool $replace_extra_symbols [optional] Add some more replacements e.g. "£" with " pound ". Return:
array An array of replacements. ↑ Returns an replacement array for ASCII methods with one language.
For example, German will map 'ä' to 'ae', while other languages will simply return e.g. 'a'.
EXAMPLE: $array = ASCII::charsArrayWithOneLanguage('ru'); $tmpKey = \array_search('yo', $array['replace']); echo $array['orig'][$tmpKey]; // 'ё'
Parameters:
ASCII::* $language [optional] Language of the source string e.g.: en, de_at, or de-ch. (default is 'en') | ASCII::*_LANGUAGE_CODE bool $replace_extra_symbols [optional] Add some more replacements e.g. "£" with " pound ". bool $asOrigReplaceArray [optional] TRUE === return {orig: string[], replace: string[]} array Return:
array An array of replacements. ↑ Returns an replacement array for ASCII methods with multiple languages.
EXAMPLE: $array = ASCII::charsArrayWithSingleLanguageValues(); $tmpKey = \array_search('hnaik', $array['replace']); echo $array['orig'][$tmpKey]; // '၌'
Parameters:
bool $replace_extra_symbols [optional] Add some more replacements e.g. "£" with " pound ". bool $asOrigReplaceArray [optional] TRUE === return {orig: string[], replace: string[]} array Return:
array An array of replacements. ↑ Accepts a string and removes malformed UTF-8 from it + extras if needed.
Parameters:
string $str The string to be sanitized. bool $normalize_whitespace [optional] Set to true, if you need to normalize the whitespace. bool $keep_non_breaking_space [optional] Set to true, to keep non-breaking-spaces, in combination with $normalize_whitespace bool $normalize_msword [optional] Set to true, if you need to normalize MS Word chars e.g.: "…" => "..." bool $remove_invisible_characters [optional] Set to false, if you not want to remove invisible characters e.g.: "\0" Return:
string A clean UTF-8 string with malformed byte sequences removed. ↑ Get all languages from the constants "ASCII::.*LANGUAGE_CODE".
Parameters: nothing
Return:
string[]↑ Checks if a string is 7 bit ASCII.
EXAMPLE: ASCII::is_ascii('白'); // false
Parameters:
string $str The string to check. Return:
true if it is ASCII
false otherwise
`
↑ Returns a string with smart quotes, ellipsis characters, and dashes from Windows-1252 (commonly used in Word documents) replaced by their ASCII equivalents.
EXAMPLE: ASCII::normalize_msword('„Abcdef…”'); // '"Abcdef..."'
Parameters:
string $str The string to be normalized. Return:
string A string with normalized characters for commonly used chars in Word documents. ↑ Normalize the whitespace.
EXAMPLE: ASCII::normalize_whitespace("abc-\xc2\xa0-öäü-\xe2\x80\xaf-\xE2\x80\xAC", true); // "abc-\xc2\xa0-öäü- -"
Parameters:
string $str The string to be normalized. bool $keepNonBreakingSpace [optional] Set to true, to keep non-breaking-spaces. bool $keepBidiUnicodeControls [optional] Set to true, to keep non-printable (for the web) bidirectional text chars. bool $normalize_control_characters [optional] Set to true, to convert e.g. LINE-, PARAGRAPH-SEPARATOR with "\n" and LINE TABULATION with "\t". Return:
string A string with normalized whitespace. ↑ Remove invisible characters from a string.
e.g.: This prevents sandwiching null characters between ascii characters, like Java\0script.
copy&past from https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/Common.php
Parameters:
string $strbool $url_encodedstring $replacementbool $keep_basic_control_charactersReturn:
string↑ Returns an ASCII version of the string. A set of non-ASCII characters are replaced with their closest ASCII counterparts, and the rest are removed by default. The language or locale of the source string can be supplied for language-specific transliteration in any of the following formats: en, en_GB, or en-GB. For example, passing "de" results in "äöü" mapping to "aeoeue" rather than "aou" as in other languages.
EXAMPLE: ASCII::to_ascii('�Düsseldorf�', 'en'); // Dusseldorf
Parameters:
string $str The input string. ASCII::* $language [optional] Language of the source string. (default is 'en') | ASCII::*_LANGUAGE_CODE bool $remove_unsupported_chars [optional] Whether or not to remove the unsupported characters. bool $replace_extra_symbols [optional] Add some more replacements e.g. "£" with " pound ". bool $use_transliterate [optional] Use ASCII::to_transliterate() for unknown chars. bool|null $replace_single_chars_only [optional] Single char replacement is better for the performance, but some languages need to replace more then one char at the same time. | NULL === auto-setting, depended on the language Return:
string A string that contains only ASCII characters. ↑ WARNING: This method will return broken characters and is only for special cases.
Convert two UTF-8 encoded string to a single-byte strings suitable for functions that need the same string length after the conversion.
The function simply uses (and updates) a tailored dynamic encoding (in/out map parameter) where non-ascii characters are remapped to the range [128-255] in order of appearance.
Parameters:
string $str1string $str2Return:
string[]↑ Convert given string to safe filename (and keep string case).
EXAMPLE: ASCII::to_filename('שדגשדג.png', true)); // 'shdgshdg.png'
Parameters:
string $strbool $use_transliterate ASCII::to_transliterate() is used by default - unsafe characters are simply replaced with hyphen otherwise. string $fallback_charReturn:
string A string that contains only safe characters for a filename. ↑ Converts the string into an URL slug. This includes replacing non-ASCII characters with their closest ASCII equivalents, removing remaining non-ASCII and non-alphanumeric characters, and replacing whitespace with $separator. The separator defaults to a single dash, and the string is also converted to lowercase. The language of the source string can also be supplied for language-specific transliteration.
Parameters:
string $strstring $separator [optional] The string used to replace whitespace. ASCII::* $language [optional] Language of the source string. (default is 'en') | ASCII::*_LANGUAGE_CODE array $replacements [optional] A map of replaceable strings. bool $replace_extra_symbols [optional] Add some more replacements e.g. "£" with " pound ". bool $use_str_to_lower [optional] Use "string to lower" for the input. bool $use_transliterate [optional] Use ASCII::to_transliterate() for unknown chars. Return:
string A string that has been converted to an URL slug. ↑ Returns an ASCII version of the string. A set of non-ASCII characters are replaced with their closest ASCII counterparts, and the rest are rem
暂无开放 Issues,或尚未同步最近议题。