155 lines
2.6 KiB
PHP
155 lines
2.6 KiB
PHP
<?php
|
|
function word_filter_callback($m) {
|
|
static $vals = array(
|
|
'smh' => 'baka',
|
|
'SMH' => 'BAKA',
|
|
'tbh' => 'desu',
|
|
'TBH' => 'DESU',
|
|
'fam' => 'senpai',
|
|
'FAM' => 'SENPAI',
|
|
'Fam' => 'Senpai',
|
|
'fams' => 'senpaitachi',
|
|
'FAMS' => 'SENPAITACHI',
|
|
'FAMs' => 'SENPAITACHI',
|
|
'Fams' => 'Senpaitachi'
|
|
);
|
|
|
|
if (!isset($vals[$m[2]])) {
|
|
return $m[0];
|
|
}
|
|
|
|
return "{$m[1]}{$vals[$m[2]]}{$m[3]}";
|
|
}
|
|
|
|
function word_filter_callback_soy($m) {
|
|
$is_uc = $m[2] === strtoupper($m[2]);
|
|
|
|
$lc = strtolower($m[4]);
|
|
|
|
if ($lc === 'uz') {
|
|
return $m[0];
|
|
}
|
|
|
|
if ($lc === 'im' || $lc === 'lent') {
|
|
$m[4] = '';
|
|
}
|
|
|
|
if (!isset($m[4][1])) {
|
|
if ($is_uc) {
|
|
$onions = 'ONIONS';
|
|
}
|
|
else {
|
|
if ($m[2][0] === 's') {
|
|
$onions = 'onions';
|
|
}
|
|
else {
|
|
$onions = 'Onions';
|
|
}
|
|
}
|
|
|
|
return "{$m[1]}{$onions}{$m[4]}";
|
|
}
|
|
|
|
if ($m[2][0] === 's') {
|
|
$b = 'b';
|
|
}
|
|
else {
|
|
$b = 'B';
|
|
}
|
|
|
|
$ac = mb_strlen($m[3]);
|
|
|
|
if ($ac == 1) {
|
|
$a = 'a';
|
|
}
|
|
else {
|
|
if ($ac < 35) {
|
|
$a = str_repeat('a', $ac);
|
|
}
|
|
else {
|
|
$a = 'a';
|
|
}
|
|
}
|
|
|
|
$based = "{$b}{$a}sed";
|
|
|
|
if ($is_uc) {
|
|
$based = strtoupper($based);
|
|
}
|
|
|
|
return $m[1] . $based . $m[4];
|
|
}
|
|
|
|
function april_leet_filter($text) {
|
|
$pairs = [
|
|
[
|
|
'a' => '4',
|
|
'A' => '4'
|
|
],
|
|
[
|
|
'e' => '3',
|
|
'E' => '3'
|
|
],
|
|
[
|
|
'i' => '1',
|
|
'I' => '1'
|
|
],
|
|
[
|
|
'o' => '0',
|
|
'O' => '0'
|
|
],
|
|
[
|
|
's' => '5',
|
|
'S' => '5'
|
|
],
|
|
[
|
|
'T' => '7',
|
|
't' => '7'
|
|
]
|
|
];
|
|
|
|
$roll1 = mt_rand(0, 5);
|
|
$roll2 = mt_rand(0, 5);
|
|
|
|
|
|
if ($roll1 === 5) {
|
|
$text = preg_replace('/([^gl])[tT]/', '${1}7', $text);
|
|
}
|
|
else {
|
|
$repl = $pairs[$roll1];
|
|
$text = strtr($text, $repl);
|
|
}
|
|
|
|
if ($roll2 != $roll1) {
|
|
if ($roll2 === 5) {
|
|
$text = preg_replace('/([^gl])[tT]/', '${1}7', $text);
|
|
}
|
|
else {
|
|
$repl = $pairs[$roll2];
|
|
$text = strtr($text, $repl);
|
|
}
|
|
}
|
|
|
|
return $text;
|
|
}
|
|
|
|
// $text contents of a field
|
|
// $type name of the field
|
|
function word_filter($text, $type) {
|
|
if ($type !== 'com') {
|
|
return $text;
|
|
}
|
|
|
|
// $text = str_replace('Cuck', 'Kek', $text);
|
|
// $text = str_replace('cuck', 'kek', $text);
|
|
$text = str_replace('CUCK', 'KEK', $text);
|
|
|
|
$text = preg_replace_callback('/(\b)(sjw|sjws|smh|tbh|fams|fam)(\b)/i', 'word_filter_callback', $text);
|
|
|
|
$text = preg_replace_callback('/(\b)(s([o0οоօჿ]+)[yуΥ])(\b|[[:alpha:]]{2,4})/iu', 'word_filter_callback_soy', $text);
|
|
|
|
$text = april_leet_filter($text);
|
|
|
|
return $text;
|
|
}
|