/assets/ddeb172d/tests/typo.php
PHP | 98 lines | 63 code | 24 blank | 11 comment | 8 complexity | dd9ad5b02dec0b6e977df213349e22b9 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0, LGPL-2.1, BSD-3-Clause, BSD-2-Clause
- <?php
- $html = stripslashes(urldecode($_POST['editor']));
- echo typo($html);
- function typo($html, $lang = 'ru')
- {
- $html = stripslashes($html);
- // remove pre
- preg_match_all('/<pre>([\\w\\W]*?)<\/pre>/i', $html, $matches);
- foreach ($matches[0] as $k => $v)
- {
- $html = str_replace($v, md5($v), $html);
- $pre_cache[md5($v)] = $v;
- }
- // remove style
- preg_match_all('/<style([\\w\\W]*?)<\/style>/i', $html, $matches);
- foreach ($matches[0] as $k => $v)
- {
- $html = str_replace($v, md5($v), $html);
- $pre_css[md5($v)] = $v;
- }
- // remove script
- preg_match_all('/<script([\\w\\W]*?)<\/script>/i', $html, $matches);
- foreach ($matches[0] as $k => $v)
- {
- $html = str_replace($v, md5($v), $html);
- $pre_script[md5($v)] = $v;
- }
- // remove tags
- preg_match_all('/<(.*?)>/i', $html, $tag_cache);
- foreach ($tag_cache[1] as $k => $v)
- {
- $html = str_replace($tag_cache[0][$k], '<'.md5($v).'>', $html);
- $full_cache['<'.md5($v).'>'] = $tag_cache[0][$k];
- }
- // Blank
- $html = preg_replace('/(\s)+/i', "$1", $html);
- $html = preg_replace('/(\n?\A)\s+(?!\-)/i', "$1", $html);
- $html = preg_replace('/\s\z/i', "", $html);
- // Mdash
- $html = preg_replace('/(>|\A|\n)\-\s/i', "$1— ", $html);
- // One-two words
- $html = preg_replace('/(?<![-:])\b([\w]{1,2}\b(?:[,:;]?))(?!\n)\s/i', "$1 ", $html);
- if ($lang == 'ru')
- {
- $html = preg_replace('/(\s| )(же|ли|ль|бы|б|ж|ка)([\.,!\?:;])? /i', " $2$3 ", $html);
- }
- // Replace special characters
- $html = preg_replace('/·/i', "•", $html);
- $html = preg_replace('/•/i', "•", $html);
- $html = preg_replace('/«/i', "«", $html);
- $html = preg_replace('/»/i', "»", $html);
- $html = preg_replace('/\.{3}/i', "…", $html);
- $html = preg_replace('/\((c|с)\)/i', "©", $html);
- $html = preg_replace('/\(r\)/i', '<sup><small>®</small></sup>', $html);
- $html = preg_replace('/\(tm\)/i', '<sup><small>™</small></sup>', $html);
- $html = preg_replace('/(\d+)(x|х)(\d+)/i', '$1×$3', $html);
- $html = preg_replace('/(\+\-|\-\+|\+\-)/i', '±', $html);
- $html = preg_replace('/([ ]+| )\-\s+/i', ' — ', $html);
- // Russian quotes
- if ($lang == 'ru')
- {
- $html = preg_replace('/(?<!\s)([!?]|…)?"(?!\b)/i', '$1»', $html);
- $html = preg_replace('/(?<!\b)"(?!\s)/i', '«', $html);
- }
- // Dash
- $html = preg_replace('/(?<!\-)(?=\b)(\w+)\-(\w+)(?<=\b)(?!\-)/i', '<span style="white-space: none;">$1-$2</span>', $html);
- if (isset($pre_cache)) foreach($pre_cache as $k => $v) $html = str_replace($k, $v, $html);
- if (isset($pre_css)) foreach($pre_css as $k => $v) $html = str_replace($k, $v, $html);
- if (isset($pre_script)) foreach($pre_script as $k => $v) $html = str_replace($k, $v, $html);
- // return tags
- if (isset($full_cache)) foreach($full_cache as $k => $v) $html = str_replace($k, $v, $html);
- return $html;
- }
- ?>