本文整理汇总了PHP中UTF8::diactrical_remove方法的典型用法代码示例。如果您正苦于以下问题:PHP UTF8::diactrical_remove方法的具体用法?PHP UTF8::diactrical_remove怎么用?PHP UTF8::diactrical_remove使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UTF8
的用法示例。
在下文中一共展示了UTF8::diactrical_remove方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: parse
/**
* Главный метод
*
* @param scalar|null $s Текст в кодировке UTF-8.
* @param array|null $words Ассоц. массив со словами, которые были исправлены:
* в ключах оригиналы, в значениях исправленные слова.
* @return string|bool returns FALSE if error occured
*/
public function parse($s, array &$words = null)
{
if (!ReflectionTypeHint::isValid()) {
return false;
}
if (!is_string($s)) {
return $s;
}
#пропускаем текст, в котором нет букв [ЕеЁё]
if ($this->_is_skip($s)) {
return $s;
}
#speed improve
if (!(is_array($this->dic) || is_resource($this->db))) {
if (function_exists('dba_open') && array_key_exists('cdb', dba_handlers(true))) {
$this->db = dba_open($this->_filename('cdb'), 'r', 'cdb');
if ($this->db === false) {
return $s;
}
} elseif ($this->is_work_for_cdb_only) {
return $s;
} else {
include $this->_filename('php');
}
}
#вырезаем и заменяем некоторые символы
$additional_chars = array("");
$s = UTF8::diactrical_remove($s, $additional_chars, $is_can_restored = true, $restore_table);
$this->words = array();
#заменяем слова из текста, минимальная длина слова -- 3 буквы, меньше нельзя
$s = preg_replace_callback('/ (' . $this->ru . ') #1 первая буква
((?:' . $this->ru_lc . '){2,}+) #2 остальные буквы
(?!
\\.(?>[\\x00-\\x20]+|\\xc2\\xa0)+ #\\xc2\\xa0 =
(?>
(?:' . $this->ru_lc . ')
| (?:' . $this->ru_uc . '){2} #пример: долл. США
| [\\x21-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7e]
)
| \\.[\\x21-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7e]
)
/sxSX', array(&$this, '_word'), $s);
$s = UTF8::diactrical_restore($s, $restore_table);
$words = $this->words;
return $s;
}
示例2: parse
//.........这里部分代码省略.........
[бb6]_?[лl]_?(?:я|ya)(?: _ #бля
| _?[тдtd] #блять, бляди
)', '(?<=\\PL) [пp]_?[иieе]_?[дdg]_?[eеaаoо]_?[rpр]', '(?<=\\PL) \\w*[пp]_?[иieе]_?[дdg]_?[eеaаoо]_?[rpр]\\b
#исключения:
(?<!импидор) #Импидор
', '(?<=\\PL) [дв]_?[еэ]_?[бb]_?[иi]_?[лl]\\b', '(?<=\\PL) [yу][р]_?[оo]_?[д]_?(?![л])', '(?<=\\PL) [мm]_?[уy]_?[дdg]_?[аa] #мудак, мудачок
#исключения:
(?<!_myda(?=s_)) #Chelonia mydas -- морская зеленая (суповая) черепаха
', '(?<=\\PL) [zж]_?h?_?[оo]_?[pп]_?[aаyуыiеeoо]', '(?<=\\PL) [мm]_?[аa]_?[нnh]_?[дdg]_?[aаyуыiеeoо]_ #манд[ауыео]
#исключения:
(?<! манда(?=[лн]|рин)
| manda(?=[ln]|rin)
)
', '(?<=\\PL) [гg]_?[оo]_?[вvb]_?[нnh]_?[оoаaяеeyу]', '(?<=\\PL) f_?u_?[cс]_?k', '[^р]_?[scс]_?[yуu]_?[kк]_?[aаiи]', '[^р]_?[scс]_?[yуu]_?[4ч]_?[кk]', '\\bл_?[оo]_?[хx]\\b', '(?<=\\PL) [шщ]_?[лl]_?[ю]_?[хш]');
$trans = array('_' => '\\x20', '\\pL' => '[^\\x20\\d]', '\\PL' => '[\\x20\\d]', '[:vowel:]' => '[аеиоуыэюяёaeioyu]', '[:consonant:]' => '[^аеиоуыэюяёaeioyu\\x20\\d]');
$re_badwords = str_replace('%RE_PRETEXT%', '(?:' . implode('|', $pretext) . ')', '~' . implode('|', $badwords) . '~sxuSX');
$re_badwords = strtr($re_badwords, $trans);
}
$s = UTF8::convert_from($s, $charset);
$replace = UTF8::convert_from($replace, $charset);
$ss = $s;
#saves original string
if ($is_html) {
#скрипты не вырезаем, т.к. м.б. обходной маневр на с кодом на javascript:
#<script>document.write('сло'+'во')</script>
#хотя давать пользователю возможность использовать код на javascript нехорошо
$s = is_callable(array('HTML', 'strip_tags')) ? HTML::strip_tags($s, null, true, array('comment', 'style', 'map', 'frameset', 'object', 'applet')) : strip_tags($s);
#заменяем html-сущности в "чистый" UTF-8
$s = UTF8::html_entity_decode($s, $is_htmlspecialchars = true);
}
if (strtoupper(substr($charset, 0, 3)) === 'UTF') {
#remove combining diactrical marks
$additional_chars = array("");
$s = UTF8::diactrical_remove($s, $additional_chars);
}
#ВотБ/\яПидорыОхуелиБлятьНахуйПохуйПи3децПолный
if (version_compare(PHP_VERSION, '5.2.0', '>=')) {
$s = preg_replace('~ [\\p{Lu}3] (?>\\p{Ll}+|/\\\\|[@36]+)++ #Вот
(?= [\\p{Lu}3] (?:\\p{Ll} |/\\\\|[@36] ) ) #Бля
~sxuSX', '$0 ', $s);
}
$s = UTF8::lowercase($s);
#получаем в массив только буквы и цифры
#"с_л@о#во,с\xc2\xa7лово.Слово" -> "с л о во с лово слово слово слово слово"
preg_match_all('~(?> \\xd0[\\xb0-\\xbf]|\\xd1[\\x80-\\x8f\\x91] #[а-я]
| /\\\\ #л
| @ #а
| [a-z\\d]+
)+
~sxSX', $s, $m);
$s = ' ' . implode(' ', $m[0]) . ' ';
$trans = array('/\\' => 'л', '@' => 'а');
$s = strtr($s, $trans);
#цифровые подделки под буквы
$trans = array('~ [3з]++ [3з\\x20]*+ ~sxuSX' => 'з', '~ [6б]++ [6б\\x20]*+ ~sxuSX' => 'б');
$s = preg_replace(array_keys($trans), array_values($trans), $s);
#убираем все повторяющиеся символы, ловим обман типа "х-у-у-й"
#"сллоооовоо слово х у у й" --> "слово слово х у й"
$s = preg_replace('/( [\\xd0\\xd1][\\x80-\\xbf] \\x20? #optimized [а-я]
| [a-z\\d] \\x20?
) \\1+
/sxSX', '$1', $s);
//echo $s
if ($replace === null || version_compare(PHP_VERSION, '5.2.0', '<')) {
$result = preg_match($re_badwords, $s, $m, PREG_OFFSET_CAPTURE);
if (function_exists('preg_last_error') && preg_last_error() !== PREG_NO_ERROR) {
示例3: parse
/**
* Исправляет клавиатурные опечатки в тексте.
*
* @param scalar|null $s Текст в кодировке UTF-8.
* @param int $mode Константы self::SIMILAR_CHARS и/или self::KEYBOARD_LAYOUT,
* (их можно комбинировать). Описание констант см. выше.
* При использовании self::KEYBOARD_LAYOUT время работы увеличивается примерно в 10 раз.
* @param array &$words Ассоц. массив со словами, которые были исправлены:
* в ключах оригиналы, в значениях исправленные слова.
* @return string|bool Returns FALSE if error occured
*/
public function parse($s, $mode = self::SIMILAR_CHARS, array &$words = null)
{
if (!ReflectionTypeHint::isValid()) {
return false;
}
if (!is_string($s)) {
return $s;
}
if ($mode < self::SIMILAR_CHARS || $mode > (self::SIMILAR_CHARS | self::KEYBOARD_LAYOUT | self::ADD_FIX)) {
trigger_error('Unknown mode', E_USER_WARNING);
return false;
}
$this->mode = $mode;
#вырезаем и заменяем некоторые символы
$additional_chars = array("");
#http://ru.wikipedia.org/wiki/Диакритические_знаки
$s = UTF8::diactrical_remove($s, $additional_chars, $is_can_restored = true, $restore_table);
$this->words = array();
$s = $this->_parse1($s);
$s = $this->_parse2($s);
$s = UTF8::diactrical_restore($s, $restore_table);
$words = $this->words;
return $s;
}
示例4: normalize
/**
* Нормализация html-текста
*
* @param string $s
* @return string
*/
public function normalize($s)
{
#1. вырезаем html-тэги и форматируем текст как text/plain
$s = HTML::strip_tags($s, null, true, array('noindex', 'script', 'noscript', 'style', 'map', 'iframe', 'frameset', 'object', 'applet', 'comment', 'button', 'textarea', 'select'));
#2. замена всех html сущностей (в т.ч. < > & ") в UTF-8
$s = HTML::entity_decode($s, $is_htmlspecialchars = true);
#3. вырезаем и заменяем некоторые символы
$trans = array("" => '', "\t" => ' ', "\f" => "\r\n\r\n");
$s = strtr($s, $trans);
$s = UTF8::diactrical_remove($s);
#remove combining diactrical marks
#4. заменяем параграфы на перенос строки, отступ слева ("красная" строка) поддерживается
return preg_replace('~(\\r\\n|[\\r\\n])(?:\\x20|\\1)+~sSX', "\r\r", $s);
}