БлогNot. Сервис генерации женских имён :)

Сервис генерации женских имён :)

В последние годы распространённые женские имена не в моде - у нас во дворе, например, бегают сплошь маленькие ЭВРИДИКИ, АУРЕЛИИ, ПОЛИНЫ, ЛОЛИТЫ, ВИОЛЕТТЫ и т.д.

Но ведь этого мало, имён-то человечество придумало не так много, может, стоит быть оригинальней? :) Во всяком случае, полученные при тестировании скрипта СИНЬЯИТА, ЛИПОЗА, ВЕОКА, СИВА, ЭДРАПОРЯ, РАКСВЕТУНА и РЕССИНЬКОРНА кажутся мне ничуть не хуже :)

Так что в свободные полчаса развлечения ради родил сервис для генерации футуристических женских имён... ну и заодно, "продвинутых никнеймов", конечно.

База составлена из сгенерированных слогов, найденных в женских именах выборки, без удаления повторов, чтоб не мучиться с частотами. Следовало бы, пожалуй, из 1000 тёток выборку сделать, но поленился.

Верхнее ограничение на число слогов произвольно, можно поменять в исходнике значение $max_slog. Разумеется, можно также добавить побольше regexp'ов для отсечения лишнего, но тоже лень.

 Сервис в работе

А вот и полный исходник скрипта на момент написания:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta content="text/html; charset=Windows-1251" http-equiv="content-type">
 <title>Female Name Generator (RU)</title>
</head>
<body>

<?php
 function trimall($string) { return trim(preg_replace("/\s+/"," ",$string)); }
 
 function magic ($path) {
  @ini_set('magic_quotes_runtime', '0'); @ini_set('magic_quotes_sybase', '0');
  if (@get_magic_quotes_gpc()=='1') $path=stripslashes($path);
  return $path;
 }

 $max_slog=4;
 $params = array ('slog','action');
 while (list($num,$var) = each($params)) {
  if (!empty($_POST[$var])) $$var = trimall(htmlspecialchars(magic($_POST[$var])));
  else $$var = '';
 }
 if (empty($slog)) $slog=3;
 else $slog=abs(intval($slog));
 if ($slog<2) $slog=2; else if ($slog>$max_slog) $slog=$max_slog;
 
 echo '
 <form name="f1" method="post" action="'.$_SERVER['PHP_SELF'].'">
  <table align="center" border="0" cellpadding="4" cellspacing="0" width="50%">
   <tr>
    <td>Количество слогов:</td>
    <td>
     <select name="slog" size="1">';
 for ($i=2; $i<5; $i++) echo '<option value="'.$i.'"'.($slog==$i?' selected':'').'>'.$i;
 echo '
     </select>
    </td>
   </tr>
   <tr>
    <td>&nbsp;</td>
    <td>
     <input type="submit" name="action" value="Сгенерировать"> 
    </td>
   </tr>
  </table>
 </form>';
 if (!empty($action)) { 
  $data=file_get_contents ('slogi.txt');
  $a=explode("\n",$data);
  $count = count ($a);
  $slogs = array ();
  $i=0;
  while ($i<$slog) {
   $k = rand (0, $count);
   $s = trim($a[$k]);
   if ($i>1) {
    if ($slogs[$i-1]==$s or $slogs[$i-2]==$s) continue; //не надо 3 повторов слога подряд
    if (preg_match ("/[АЕИОУЫЭЮЯ][АЕИОУЫЭЮЯ][АЕИОУЫЭЮЯ]$/",implode($slogs))>0) continue; //или 3 гласных
   }
   if ($i==$slog-1 && preg_match ("/[БВГДЕЖЗЙКЛМНОПРСТФХЦЧШЩЪЫЬЭ]$/", $s)>0) continue; //не надо этого в конце
   $slogs[] = $s; $i++; 
  }
  $name=implode($slogs);
  echo '<div align="center">'.$name.'</div>';
 }
?>
</body></html>

05.02.2014, 21:10 [10652 просмотра]


теги: random маразм php сервис

К этой статье пока нет комментариев, Ваш будет первым