Advertisement
Guest User

Subtitle Checker

a guest
Jun 30th, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.35 KB | None | 0 0
  1. <?php
  2.  
  3. header('Content-Type:text/html; charset=utf-8');
  4.  
  5. mb_internal_encoding('utf-8');
  6.  
  7. set_time_limit(125);
  8.  
  9.  
  10. $long_line = 40;                // Number of characters considered a long line
  11.  
  12.  
  13. function find($words, $i, $s) {
  14.  
  15.     if(mb_strpos($words[$i - 1], '-->') !== false)
  16.         return $words[$i - 2];
  17.     else if($s > 0)
  18.         return find($words, $i - 1, $s - 1);
  19.     else
  20.         return null;
  21. }
  22.  
  23. function make_good($s) {
  24.  
  25.     $good = 'А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я';
  26.  
  27.     $bad = 'À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Ü Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú ü þ ÿ';
  28.  
  29.     $g = explode(" ", $good);
  30.     $b = explode(" ", $bad);
  31.  
  32.     $new = '';
  33.  
  34.     for($i = 0; $i < mb_strlen($s); $i ++) {
  35.  
  36.         $k = 0;
  37.  
  38.         for($j = 0; $j < sizeof($b); $j ++) {
  39.  
  40.             if(mb_substr($s, $i, 1) == $b[$j]) {
  41.                 $new .= $g[$j];
  42.  
  43.                 $k = 1;
  44.             }
  45.         }
  46.  
  47.         if($k == 0)
  48.             $new .= mb_substr($s, $i, 1);
  49.  
  50.     }
  51.  
  52.     return $new;
  53. }
  54.  
  55. $show = 1;
  56.  
  57. if(isset($_POST['words'])) {
  58.  
  59.     $words = explode("\n", $_POST['words']);
  60.  
  61.     $show = 0;
  62. }
  63. ?>
  64. <!DOCTYPE html>
  65. <html>
  66. <head>
  67. <title>Subtitle Check</title>
  68. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  69. </head>
  70. <body<?php
  71.  
  72. if($show == 0)
  73.     echo ' style="margin: 40px 30% 40px 30%; font-family: \'Courier New\'; font-size: 16px; color: #000000;"';
  74.  
  75. ?>>
  76. <?php
  77.  
  78. if($show == 1)
  79.     echo '<br><br><form method="post"><table><tr><td style="width: 240px; text-align: right;">
  80. <input type="submit" value="Submit" style="width: 60px; height: 300px; margin-right: 50px;"></td>
  81. <td><textarea name="words" style="overflow-y: scroll; width: 880px; height: 528px;"></textarea></td>
  82. </tr></table></form>
  83. ';
  84. else {
  85.  
  86.     $overlap = array();
  87.     $long = array();
  88.     $large = array();
  89.     $tags = array();
  90.     $other = array();
  91.  
  92.     $k = array();
  93.     $j = 0;
  94.     $n = 0;
  95.  
  96.     $e = 0;
  97.     $w = 0;
  98.  
  99.     $k[-1] = -1;
  100.  
  101.     for($i = 0; $i < sizeof($words); $i ++)
  102.         $words[$i] = trim($words[$i]);
  103.  
  104.     for($i = 0; $i < sizeof($words); $i ++) {
  105.  
  106.         if(mb_strpos($words[$i], '-->') !== false) {
  107.             $overlap[$j][0] = preg_replace('/[^0-9.]+/', '', mb_substr($words[$i], 0, 12));
  108.             $overlap[$j][1] = preg_replace('/[^0-9.]+/', '', mb_substr($words[$i], -12));
  109.             $overlap[$j][2] = $words[$i - 1];
  110.  
  111.             $j ++;
  112.         }
  113.     }
  114.  
  115.     $overlap[$j][0] = 999999999;
  116.  
  117.     for($j = 0; $j < sizeof($overlap); $j ++) {
  118.  
  119.         if(intval($overlap[$j][1]) > intval($overlap[$j + 1][0])) {
  120.  
  121.             $e = 1;
  122.  
  123.             if($w == 0) {
  124.                 echo '<strong>Overlap:</strong><br><br>
  125. ';
  126.                 $w = 1;
  127.             }
  128.  
  129.             echo $overlap[$j][2] . '
  130. ';
  131.         }
  132.     }
  133.  
  134.     $j = 0;
  135.  
  136.     $w = 0;
  137.  
  138.     for($i = 0; $i < sizeof($words); $i ++) {
  139.  
  140.         $long[$i] = '';
  141.  
  142.         if(mb_strlen(strip_tags($words[$i])) > $long_line)
  143.             $long[$i] = find($words, $i, 8);
  144.     }
  145.  
  146.     for($i = 0; $i < sizeof($long); $i ++) {
  147.  
  148.         if(mb_strlen($long[$i]) > 0) {
  149.  
  150.             if($e == 1 && $w == 0)
  151.                 echo '<br><br><br>';
  152.  
  153.             $e = 1;
  154.  
  155.             if($w == 0) {
  156.                 echo '<strong>Long:</strong><br><br>
  157. ';
  158.                 $w = 1;
  159.             }
  160.  
  161.             echo $long[$i] . '
  162. ';
  163.         }
  164.     }
  165.  
  166.     $w = 0;
  167.  
  168.     for($i = 0; $i < sizeof($words); $i ++) {
  169.  
  170.         if(mb_strlen($words[$i]) < 1 && mb_strlen($words[$i - 1]) > 0 && $i > 0) {
  171.             $k[$j] = $i;
  172.  
  173.             if($j > 0) {
  174.                 if(($k[$j - 1] - $k[$j - 2]) > 5) {
  175.                     if($j > 1)
  176.                         $n = $k[$j - 2] + 1;
  177.  
  178.                     if(($k[$j - 1] - $k[$j - 2]) > 6)
  179.                         $large[$n] = '<strong>' . $words[$n] . '</strong>';
  180.                     else
  181.                         $large[$n] = $words[$n];
  182.                 }
  183.             }
  184.  
  185.             $j ++;
  186.         }
  187.     }
  188.  
  189.     if($j > 1) {
  190.         if(($k[$j - 1] - $k[$j - 2]) > 5) {
  191.             $n = $k[$j - 2] + 1;
  192.  
  193.             if(($k[$j - 1] - $k[$j - 2]) > 6)
  194.                 $large[$n] = '<strong>' . $words[$n] . '</strong>';
  195.             else
  196.                 $large[$n] = $words[$n];
  197.         }
  198.     }
  199.  
  200.     for($i = 0; $i <= $n; $i ++) {
  201.  
  202.         if(mb_strlen($large[$i]) > 0) {
  203.  
  204.             if($e == 1 && $w == 0)
  205.                 echo '<br><br><br>';
  206.  
  207.             $e = 1;
  208.  
  209.             if($w == 0) {
  210.                 echo '<strong>Large:</strong><br><br>
  211. ';
  212.                 $w = 1;
  213.             }
  214.  
  215.             echo $large[$i] . '
  216. ';
  217.         }
  218.     }
  219.  
  220.     if($e == 0)
  221.         echo '<strong>No errors.</strong>
  222. ';
  223.  
  224.     $w = 0;
  225.  
  226.     for($i = 0; $i < sizeof($words); $i ++) {
  227.  
  228.         $tags[$i] = '';
  229.  
  230.         if(mb_strpos($words[$i], '<') !== false || mb_strpos($words[$i], '{') !== false || mb_strpos($words[$i], '}') !== false) {
  231.             $tags[$i] = find($words, $i, 8);
  232.  
  233.             if(mb_strpos($words[$i], 'font') !== false || mb_strpos($words[$i], '<b') !== false || mb_strpos($words[$i], '<u') !== false ||
  234.                 mb_strpos($words[$i], '{') !== false || mb_strpos($words[$i], '}') !== false)
  235.                 $tags[$i] = '<strong>' . $tags[$i] . '</strong>';
  236.         }
  237.     }
  238.  
  239.     for($i = 0; $i < sizeof($tags); $i ++) {
  240.  
  241.         if(mb_strlen($tags[$i]) > 0 && $tags[$i] != $tags[$i - 1]) {
  242.  
  243.             if($w == 0) {
  244.                 echo '<br><br><br><strong>Tags:</strong><br><br>
  245. ';
  246.                 $w = 1;
  247.             }
  248.  
  249.             echo $tags[$i] . '
  250. ';
  251.         }
  252.     }
  253.  
  254.     $w = 0;
  255.  
  256.     for($i = 0; $i < sizeof($words); $i ++) {
  257.  
  258.         $other[$i] = '';
  259.  
  260.         if(preg_match('/[A-Za-z]/', preg_replace('/\PL/u', '', strip_tags($words[$i]))))
  261.             $other[$i] = find($words, $i, 8);
  262.     }
  263.  
  264.     for($i = 0; $i < sizeof($other); $i ++) {
  265.  
  266.         if(mb_strlen($other[$i]) > 0) {
  267.  
  268.             if($w == 0) {
  269.                 echo '<br><br><br><strong>Latin:</strong><br><br>
  270. ';
  271.                 $w = 1;
  272.             }
  273.  
  274.             echo $other[$i] . ' ' . make_good($words[$i]) . '<br>
  275. ';
  276.         }
  277.     }
  278.  
  279. }
  280.  
  281. ?>
  282. </body>
  283. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement