|
<?php |
|
define('CLOSETOINFINITY', pow(10, 308)); |
|
|
|
class SpinerMan { |
|
|
|
private static $closeToInfinity = CLOSETOINFINITY; |
|
|
|
public static function getText($q, $p) { |
|
$c = []; |
|
$b = ""; |
|
$g = []; |
|
$h = 0; |
|
$f = 0; |
|
$e = 0; |
|
$d = 0; |
|
$n = 0; |
|
$o = 1; |
|
$m = $q->c; |
|
$a = ""; |
|
for($h = 0; $h < strlen($q->h->c); $h++) { |
|
$a = "{".$h."}"; |
|
$f = 0; |
|
$d = floor($p / $o) % $q->h->r[$h]; |
|
$e = $q->h->c[$h][$f]->r; |
|
while(floor($p / $o) % $q->h->r[$h] >= $e) { |
|
$d -= $q->h->c[$h][$f]->r; |
|
$f++; |
|
$e += $q->h->c[$h][$f]->r; |
|
} |
|
$o = $o * $q->h->r[$h]; |
|
$b = self::getText($q->h->c[$h][$f], $d); |
|
$n = array_search($a, $m); |
|
$m = substr($m, 0, $n).$b.substr($m, $n + strlen($a)); |
|
} |
|
return $m; |
|
} |
|
|
|
public static function buildTree($text, $g = 0) { |
|
$q = ""; |
|
$p = ""; |
|
$a = 0; |
|
$h = 0; |
|
$t = json_decode( |
|
'{' |
|
.' "c": "",' // (String) S |
|
.' "h": { "c": [], "r": [] },' // c: (String), r: (Number/Array of Numbers) |
|
.' "d": '.(!$g ? 0 : $g).',' // (Number) |
|
.' "r": 1,' // (Number) |
|
.' "s": {' // (Object) |
|
.' "l": 0,' // (Number) |
|
.' "w": 0,' // (Number) |
|
.' "h": 0,' // (Number) |
|
.' "r": 0,' // (Number) |
|
.' "wmin": 0,' // (Number) |
|
.' "wmax": 0,' // (Number) |
|
.' "lmin": 0,' // (Number) |
|
.' "lmax": 0' // (Number) |
|
.' }' |
|
.'}' |
|
); //self::debug($t); exit(); |
|
$d = array(); |
|
$m = 0; |
|
$b = 0; |
|
$o = 0; |
|
$s = ""; |
|
$f = false; |
|
$e = false; |
|
$n = 0; |
|
$k = 0; |
|
if(strpos($text, "{") < 0) { |
|
$t->c = $text; |
|
$t->s->w = self::countWords($text); |
|
$t->s->l = strlen($text); |
|
$t->s->wmin = $t->s->w; |
|
$t->s->wmax = $t->s->w; |
|
$t->s->lmin = $t->s->l; |
|
$t->s->lmax = $t->s->l; |
|
return $t; |
|
} |
|
for($h = 0; $h < strlen($text); $h++) { |
|
$p = $text[$h]; |
|
if($p === "{") { |
|
if($a === 0) { |
|
$s .= $q; |
|
$t->c = $t->c.$q; |
|
$q = ""; |
|
} else { |
|
$q = $q.$p; |
|
} |
|
$a++; |
|
} else { |
|
if($p === "|") { |
|
if($a === 1) { |
|
$q = self::buildTree($q, $t->d + 1); |
|
if($q === false) { |
|
return false; |
|
} |
|
$m += $q->r; |
|
$b += $q->s->l; |
|
$o += $q->s->w; |
|
$t->s->h += $q->s->h; |
|
$t->s->r += max(1, $q->s->r); |
|
$f = $f === false ? $q->s->wmin : min($f, $q->s->wmin); |
|
$e = $e === false ? $q->s->lmin : min($e, $q->s->lmin); |
|
$n = max($n, $q->s->wmax); |
|
$k = max($k, $q->s->lmax); |
|
array_push($d, $q); |
|
$q = ""; |
|
} else { |
|
$q = $q.$p; |
|
} |
|
} else { |
|
if ($p === "}") { |
|
if ($a === 1) { |
|
$q = self::buildTree($q, $t->d + 1); |
|
if($q === false) { |
|
return false; |
|
} |
|
$t->c = $t->c."{".count($t->h->c)."}"; |
|
array_push($d, $q); |
|
$m += $q->r; |
|
$b += $q->s->l; |
|
$o += $q->s->w; |
|
$t->s->h += $q->s->h + 1; |
|
$t->s->r += max(1, $q->s->r); |
|
$t->s->w = $o * $t->r + $t->s->w * $m; |
|
$t->s->l = $b * $t->r + $t->s->l * $m; |
|
$t->s->wmin += $f === false ? $q->s->wmin : min($f, $q->s->wmin); |
|
$t->s->lmin += $e === false ? $q->s->lmin : min($e, $q->s->lmin); |
|
$t->s->wmax += max($n, $q->s->wmax); |
|
$t->s->lmax += max($k, $q->s->lmax); |
|
$f = false; |
|
$e = false; |
|
$n = 0; |
|
$k = 0; |
|
$t->r = $t->r * $m; |
|
$t->h->r[count($t->h->c)] = $m; |
|
$m = 0; |
|
$b = 0; |
|
$o = 0; |
|
array_push($t->h->c, $d); |
|
$d = array(); |
|
$q = ""; |
|
} else { |
|
$q = $q.$p; |
|
} |
|
$a--; |
|
} else { |
|
$q = $q.$p; |
|
} |
|
} |
|
} |
|
} |
|
if($a !== 0) { |
|
if($a > 0) { |
|
throw new Exception('Missing }'); |
|
} else { |
|
throw new Exception('Missing {'); |
|
} |
|
return false; |
|
} |
|
if($q !== "") { |
|
$s .= $q; |
|
$t->c = $t->c.$q; |
|
} |
|
$o = self::countWords($s); |
|
$t->s->l += $t->r * strlen($s); |
|
$t->s->w += $t->r * $o; |
|
$t->s->wmin += $o; |
|
$t->s->wmax += $o; |
|
$t->s->lmin += strlen($s); |
|
$t->s->lmax += strlen($s); |
|
return $t; |
|
} |
|
|
|
public static function getVariation($tree, $index) { |
|
$c = array(); |
|
$b = ""; |
|
$g = array(); |
|
$h = 0; |
|
$f = 0; |
|
$e = 0; |
|
$d = 0; |
|
$n = 0; |
|
$o = 1; |
|
$m = $tree->c; |
|
$a = ""; |
|
for($h = 0; $h < count($tree->h->c); $h++) { |
|
$a = "{".$h."}"; |
|
$f = 0; |
|
$d = floor($index / $o) % $tree->h->r[$h]; |
|
$e = $tree->h->c[$h][$f]->r; |
|
while(floor($index / $o) % $tree->h->r[$h] >= $e) { |
|
$d -= $tree->h->c[$h][$f]->r; |
|
$f++; |
|
$e += $tree->h->c[$h][$f]->r; |
|
} |
|
$o = $o * $tree->h->r[$h]; |
|
$b = self::getVariation($tree->h->c[$h][$f], $d); |
|
$n = strpos($m, $a); |
|
$m = substr($m, 0, $n).$b.substr($m, $n + strlen($a)); |
|
} |
|
return $m; |
|
} |
|
|
|
public static function getAllVariations($tree) { |
|
$aResult = array(); |
|
for($i = 0; $i < $tree->r; $i++) { |
|
array_push($aResult, self::getVariation($tree, $i)); |
|
} |
|
return $aResult; |
|
} |
|
|
|
public static function getStats($tree) { |
|
$calculationOverflow = false; |
|
|
|
if(true !== is_finite($tree->r)) { |
|
$tree->r = self::$closeToInfinity; |
|
$calculationOverflow = true; |
|
} |
|
$result = new stdClass(); |
|
$result->totalResults = $tree->r; // ie. total of possible spuns |
|
$result->totalHoles = $tree->s->h; |
|
$result->totalVariations = $tree->s->r; // ie. total number of choices / remplacements |
|
$result->minWords = $tree->s->wmin; |
|
$result->maxWords = $tree->s->wmax; |
|
$result->avgWords = $tree->r > 0 ? ($tree->s->w / $tree->r) : 0; |
|
$result->minLength = $tree->s->lmin; |
|
$result->maxLength = $tree->s->lmax; |
|
$result->avgLength = $tree->r > 0 ? ($tree->s->l / $tree->r) : 0; |
|
$result->calculationOverflow = $calculationOverflow; |
|
if(!is_numeric($result->avgWords) || true !== is_finite($result->avgWords)) { |
|
$result->avgWords = ($result->minWords + $result->maxWords) / 2; |
|
} |
|
if(!is_numeric($result->avgLength) || true !== is_finite($result->avgLength)) { |
|
$result->avgLength = ($result->minLength + $result->maxLength) / 2; |
|
} |
|
|
|
return $result; |
|
} |
|
|
|
public static function countWords($e) { |
|
$regex = '/[^A-Za-z\xc2\xaa\xc2\xb5\xc2\xba\xc3\x80\x2d\xc3\x96\xc3\x98\x2d\xc3\xb6\xc3\xb8\x2d\xcb\x81\xcb\x86\x2d\xcb\x91\xcb\xa0\x2d\xcb\xa4\xcb\xac\xcb\xae\xcd\xb0\x2d\xcd\xb4\xcd\xb6\xcd\xb7\xcd\xba\x2d\xcd\xbd\xce\x86\xce\x88\x2d\xce\x8a\xce\x8c\xce\x8e\x2d\xce\xa1\xce\xa3\x2d\xcf\xb5\xcf\xb7\x2d\xd2\x81\xd2\x8a\x2d\xd4\xa5\xd4\xb1\x2d\xd5\x96\xd5\x99\xd5\xa1\x2d\xd6\x87\xd7\x90\x2d\xd7\xaa\xd7\xb0\x2d\xd7\xb2\xd8\xa1\x2d\xd9\x8a\xd9\xae\xd9\xaf\xd9\xb1\x2d\xdb\x93\xdb\x95\xdb\xa5\xdb\xa6\xdb\xae\xdb\xaf\xdb\xba\x2d\xdb\xbc\xdb\xbf\xdc\x90\xdc\x92\x2d\xdc\xaf\xdd\x8d\x2d\xde\xa5\xde\xb1\xdf\x8a\x2d\xdf\xaa\xdf\xb4\xdf\xb5\xdf\xba\xe0\xa0\x80\x2d\xe0\xa0\x95\xe0\xa0\x9a\xe0\xa0\xa4\xe0\xa0\xa8\xe0\xa4\x84\x2d\xe0\xa4\xb9\xe0\xa4\xbd\xe0\xa5\x90\xe0\xa5\x98\x2d\xe0\xa5\xa1\xe0\xa5\xb1\xe0\xa5\xb2\xe0\xa5\xb9\x2d\xe0\xa5\xbf\xe0\xa6\x85\x2d\xe0\xa6\x8c\xe0\xa6\x8f\xe0\xa6\x90\xe0\xa6\x93\x2d\xe0\xa6\xa8\xe0\xa6\xaa\x2d\xe0\xa6\xb0\xe0\xa6\xb2\xe0\xa6\xb6\x2d\xe0\xa6\xb9\xe0\xa6\xbd\xe0\xa7\x8e\xe0\xa7\x9c\xe0\xa7\x9d\xe0\xa7\x9f\x2d\xe0\xa7\xa1\xe0\xa7\xb0\xe0\xa7\xb1\xe0\xa8\x85\x2d\xe0\xa8\x8a\xe0\xa8\x8f\xe0\xa8\x90\xe0\xa8\x93\x2d\xe0\xa8\xa8\xe0\xa8\xaa\x2d\xe0\xa8\xb0\xe0\xa8\xb2\xe0\xa8\xb3\xe0\xa8\xb5\xe0\xa8\xb6\xe0\xa8\xb8\xe0\xa8\xb9\xe0\xa9\x99\x2d\xe0\xa9\x9c\xe0\xa9\x9e\xe0\xa9\xb2\x2d\xe0\xa9\xb4\xe0\xaa\x85\x2d\xe0\xaa\x8d\xe0\xaa\x8f\x2d\xe0\xaa\x91\xe0\xaa\x93\x2d\xe0\xaa\xa8\xe0\xaa\xaa\x2d\xe0\xaa\xb0\xe0\xaa\xb2\xe0\xaa\xb3\xe0\xaa\xb5\x2d\xe0\xaa\xb9\xe0\xaa\xbd\xe0\xab\x90\xe0\xab\xa0\xe0\xab\xa1\xe0\xac\x85\x2d\xe0\xac\x8c\xe0\xac\x8f\xe0\xac\x90\xe0\xac\x93\x2d\xe0\xac\xa8\xe0\xac\xaa\x2d\xe0\xac\xb0\xe0\xac\xb2\xe0\xac\xb3\xe0\xac\xb5\x2d\xe0\xac\xb9\xe0\xac\xbd\xe0\xad\x9c\xe0\xad\x9d\xe0\xad\x9f\x2d\xe0\xad\xa1\xe0\xad\xb1\xe0\xae\x83\xe0\xae\x85\x2d\xe0\xae\x8a\xe0\xae\x8e\x2d\xe0\xae\x90\xe0\xae\x92\x2d\xe0\xae\x95\xe0\xae\x99\xe0\xae\x9a\xe0\xae\x9c\xe0\xae\x9e\xe0\xae\x9f\xe0\xae\xa3\xe0\xae\xa4\xe0\xae\xa8\x2d\xe0\xae\xaa\xe0\xae\xae\x2d\xe0\xae\xb9\xe0\xaf\x90\xe0\xb0\x85\x2d\xe0\xb0\x8c\xe0\xb0\x8e\x2d\xe0\xb0\x90\xe0\xb0\x92\x2d\xe0\xb0\xa8\xe0\xb0\xaa\x2d\xe0\xb0\xb3\xe0\xb0\xb5\x2d\xe0\xb0\xb9\xe0\xb0\xbd\xe0\xb1\x98\xe0\xb1\x99\xe0\xb1\xa0\xe0\xb1\xa1\xe0\xb2\x85\x2d\xe0\xb2\x8c\xe0\xb2\x8e\x2d\xe0\xb2\x90\xe0\xb2\x92\x2d\xe0\xb2\xa8\xe0\xb2\xaa\x2d\xe0\xb2\xb3\xe0\xb2\xb5\x2d\xe0\xb2\xb9\xe0\xb2\xbd\xe0\xb3\x9e\xe0\xb3\xa0\xe0\xb3\xa1\xe0\xb4\x85\x2d\xe0\xb4\x8c\xe0\xb4\x8e\x2d\xe0\xb4\x90\xe0\xb4\x92\x2d\xe0\xb4\xa8\xe0\xb4\xaa\x2d\xe0\xb4\xb9\xe0\xb4\xbd\xe0\xb5\xa0\xe0\xb5\xa1\xe0\xb5\xba\x2d\xe0\xb5\xbf\xe0\xb6\x85\x2d\xe0\xb6\x96\xe0\xb6\x9a\x2d\xe0\xb6\xb1\xe0\xb6\xb3\x2d\xe0\xb6\xbb\xe0\xb6\xbd\xe0\xb7\x80\x2d\xe0\xb7\x86\xe0\xb8\x81\x2d\xe0\xb8\xb0\xe0\xb8\xb2\xe0\xb8\xb3\xe0\xb9\x80\x2d\xe0\xb9\x86\xe0\xba\x81\xe0\xba\x82\xe0\xba\x84\xe0\xba\x87\xe0\xba\x88\xe0\xba\x8a\xe0\xba\x8d\xe0\xba\x94\x2d\xe0\xba\x97\xe0\xba\x99\x2d\xe0\xba\x9f\xe0\xba\xa1\x2d\xe0\xba\xa3\xe0\xba\xa5\xe0\xba\xa7\xe0\xba\xaa\xe0\xba\xab\xe0\xba\xad\x2d\xe0\xba\xb0\xe0\xba\xb2\xe0\xba\xb3\xe0\xba\xbd\xe0\xbb\x80\x2d\xe0\xbb\x84\xe0\xbb\x86\xe0\xbb\x9c\xe0\xbb\x9d\xe0\xbc\x80\xe0\xbd\x80\x2d\xe0\xbd\x87\xe0\xbd\x89\x2d\xe0\xbd\xac\xe0\xbe\x88\x2d\xe0\xbe\x8b\xe1\x80\x80\x2d\xe1\x80\xaa\xe1\x80\xbf\xe1\x81\x90\x2d\xe1\x81\x95\xe1\x81\x9a\x2d\xe1\x81\x9d\xe1\x81\xa1\xe1\x81\xa5\xe1\x81\xa6\xe1\x81\xae\x2d\xe1\x81\xb0\xe1\x81\xb5\x2d\xe1\x82\x81\xe1\x82\x8e\xe1\x82\xa0\x2d\xe1\x83\x85\xe1\x83\x90\x2d\xe1\x83\xba\xe1\x83\xbc\xe1\x84\x80\x2d\xe1\x89\x88\xe1\x89\x8a\x2d\xe1\x89\x8d\xe1\x89\x90\x2d\xe1\x89\x96\xe1\x89\x98\xe1\x89\x9a\x2d\xe1\x89\x9d\xe1\x89\xa0\x2d\xe1\x8a\x88\xe1\x8a\x8a\x2d\xe1\x8a\x8d\xe1\x8a\x90\x2d\xe1\x8a\xb0\xe1\x8a\xb2\x2d\xe1\x8a\xb5\xe1\x8a\xb8\x2d\xe1\x8a\xbe\xe1\x8b\x80\xe1\x8b\x82\x2d\xe1\x8b\x85\xe1\x8b\x88\x2d\xe1\x8b\x96\xe1\x8b\x98\x2d\xe1\x8c\x90\xe1\x8c\x92\x2d\xe1\x8c\x95\xe1\x8c\x98\x2d\xe1\x8d\x9a\xe1\x8e\x80\x2d\xe1\x8e\x8f\xe1\x8e\xa0\x2d\xe1\x8f\xb4\xe1\x90\x81\x2d\xe1\x99\xac\xe1\x99\xaf\x2d\xe1\x99\xbf\xe1\x9a\x81\x2d\xe1\x9a\x9a\xe1\x9a\xa0\x2d\xe1\x9b\xaa\xe1\x9c\x80\x2d\xe1\x9c\x8c\xe1\x9c\x8e\x2d\xe1\x9c\x91\xe1\x9c\xa0\x2d\xe1\x9c\xb1\xe1\x9d\x80\x2d\xe1\x9d\x91\xe1\x9d\xa0\x2d\xe1\x9d\xac\xe1\x9d\xae\x2d\xe1\x9d\xb0\xe1\x9e\x80\x2d\xe1\x9e\xb3\xe1\x9f\x97\xe1\x9f\x9c\xe1\xa0\xa0\x2d\xe1\xa1\xb7\xe1\xa2\x80\x2d\xe1\xa2\xa8\xe1\xa2\xaa\xe1\xa2\xb0\x2d\xe1\xa3\xb5\xe1\xa4\x80\x2d\xe1\xa4\x9c\xe1\xa5\x90\x2d\xe1\xa5\xad\xe1\xa5\xb0\x2d\xe1\xa5\xb4\xe1\xa6\x80\x2d\xe1\xa6\xab\xe1\xa7\x81\x2d\xe1\xa7\x87\xe1\xa8\x80\x2d\xe1\xa8\x96\xe1\xa8\xa0\x2d\xe1\xa9\x94\xe1\xaa\xa7\xe1\xac\x85\x2d\xe1\xac\xb3\xe1\xad\x85\x2d\xe1\xad\x8b\xe1\xae\x83\x2d\xe1\xae\xa0\xe1\xae\xae\xe1\xae\xaf\xe1\xb0\x80\x2d\xe1\xb0\xa3\xe1\xb1\x8d\x2d\xe1\xb1\x8f\xe1\xb1\x9a\x2d\xe1\xb1\xbd\xe1\xb3\xa9\x2d\xe1\xb3\xac\xe1\xb3\xae\x2d\xe1\xb3\xb1\xe1\xb4\x80\x2d\xe1\xb6\xbf\xe1\xb8\x80\x2d\xe1\xbc\x95\xe1\xbc\x98\x2d\xe1\xbc\x9d\xe1\xbc\xa0\x2d\xe1\xbd\x85\xe1\xbd\x88\x2d\xe1\xbd\x8d\xe1\xbd\x90\x2d\xe1\xbd\x97\xe1\xbd\x99\xe1\xbd\x9b\xe1\xbd\x9d\xe1\xbd\x9f\x2d\xe1\xbd\xbd\xe1\xbe\x80\x2d\xe1\xbe\xb4\xe1\xbe\xb6\x2d\xe1\xbe\xbc\xe1\xbe\xbe\xe1\xbf\x82\x2d\xe1\xbf\x84\xe1\xbf\x86\x2d\xe1\xbf\x8c\xe1\xbf\x90\x2d\xe1\xbf\x93\xe1\xbf\x96\x2d\xe1\xbf\x9b\xe1\xbf\xa0\x2d\xe1\xbf\xac\xe1\xbf\xb2\x2d\xe1\xbf\xb4\xe1\xbf\xb6\x2d\xe1\xbf\xbc\xe2\x81\xb1\xe2\x81\xbf\xe2\x82\x90\x2d\xe2\x82\x94\xe2\x84\x82\xe2\x84\x87\xe2\x84\x8a\x2d\xe2\x84\x93\xe2\x84\x95\xe2\x84\x99\x2d\xe2\x84\x9d\xe2\x84\xa4\xe2\x84\xa6\xe2\x84\xa8\xe2\x84\xaa\x2d\xe2\x84\xad\xe2\x84\xaf\x2d\xe2\x84\xb9\xe2\x84\xbc\x2d\xe2\x84\xbf\xe2\x85\x85\x2d\xe2\x85\x89\xe2\x85\x8e\xe2\x86\x83\xe2\x86\x84\xe2\xb0\x80\x2d\xe2\xb0\xae\xe2\xb0\xb0\x2d\xe2\xb1\x9e\xe2\xb1\xa0\x2d\xe2\xb3\xa4\xe2\xb3\xab\x2d\xe2\xb3\xae\xe2\xb4\x80\x2d\xe2\xb4\xa5\xe2\xb4\xb0\x2d\xe2\xb5\xa5\xe2\xb5\xaf\xe2\xb6\x80\x2d\xe2\xb6\x96\xe2\xb6\xa0\x2d\xe2\xb6\xa6\xe2\xb6\xa8\x2d\xe2\xb6\xae\xe2\xb6\xb0\x2d\xe2\xb6\xb6\xe2\xb6\xb8\x2d\xe2\xb6\xbe\xe2\xb7\x80\x2d\xe2\xb7\x86\xe2\xb7\x88\x2d\xe2\xb7\x8e\xe2\xb7\x90\x2d\xe2\xb7\x96\xe2\xb7\x98\x2d\xe2\xb7\x9e\xe2\xb8\xaf\xe3\x80\x85\xe3\x80\x86\xe3\x80\xb1\x2d\xe3\x80\xb5\xe3\x80\xbb\xe3\x80\xbc\xe3\x81\x81\x2d\xe3\x82\x96\xe3\x82\x9d\x2d\xe3\x82\x9f\xe3\x82\xa1\x2d\xe3\x83\xba\xe3\x83\xbc\x2d\xe3\x83\xbf\xe3\x84\x85\x2d\xe3\x84\xad\xe3\x84\xb1\x2d\xe3\x86\x8e\xe3\x86\xa0\x2d\xe3\x86\xb7\xe3\x87\xb0\x2d\xe3\x87\xbf\xe3\x90\x80\x2d\xe4\xb6\xb5\xe4\xb8\x80\x2d\xe9\xbf\x8b\xea\x80\x80\x2d\xea\x92\x8c\xea\x93\x90\x2d\xea\x93\xbd\xea\x94\x80\x2d\xea\x98\x8c\xea\x98\x90\x2d\xea\x98\x9f\xea\x98\xaa\xea\x98\xab\xea\x99\x80\x2d\xea\x99\x9f\xea\x99\xa2\x2d\xea\x99\xae\xea\x99\xbf\x2d\xea\x9a\x97\xea\x9a\xa0\x2d\xea\x9b\xa5\xea\x9c\x97\x2d\xea\x9c\x9f\xea\x9c\xa2\x2d\xea\x9e\x88\xea\x9e\x8b\xea\x9e\x8c\xea\x9f\xbb\x2d\xea\xa0\x81\xea\xa0\x83\x2d\xea\xa0\x85\xea\xa0\x87\x2d\xea\xa0\x8a\xea\xa0\x8c\x2d\xea\xa0\xa2\xea\xa1\x80\x2d\xea\xa1\xb3\xea\xa2\x82\x2d\xea\xa2\xb3\xea\xa3\xb2\x2d\xea\xa3\xb7\xea\xa3\xbb\xea\xa4\x8a\x2d\xea\xa4\xa5\xea\xa4\xb0\x2d\xea\xa5\x86\xea\xa5\xa0\x2d\xea\xa5\xbc\xea\xa6\x84\x2d\xea\xa6\xb2\xea\xa7\x8f\xea\xa8\x80\x2d\xea\xa8\xa8\xea\xa9\x80\x2d\xea\xa9\x82\xea\xa9\x84\x2d\xea\xa9\x8b\xea\xa9\xa0\x2d\xea\xa9\xb6\xea\xa9\xba\xea\xaa\x80\x2d\xea\xaa\xaf\xea\xaa\xb1\xea\xaa\xb5\xea\xaa\xb6\xea\xaa\xb9\x2d\xea\xaa\xbd\xea\xab\x80\xea\xab\x82\xea\xab\x9b\x2d\xea\xab\x9d\xea\xaf\x80\x2d\xea\xaf\xa2\xea\xb0\x80\x2d\xed\x9e\xa3\xed\x9e\xb0\x2d\xed\x9f\x86\xed\x9f\x8b\x2d\xed\x9f\xbb\xef\xa4\x80\x2d\xef\xa8\xad\xef\xa8\xb0\x2d\xef\xa9\xad\xef\xa9\xb0\x2d\xef\xab\x99\xef\xac\x80\x2d\xef\xac\x86\xef\xac\x93\x2d\xef\xac\x97\xef\xac\x9d\xef\xac\x9f\x2d\xef\xac\xa8\xef\xac\xaa\x2d\xef\xac\xb6\xef\xac\xb8\x2d\xef\xac\xbc\xef\xac\xbe\xef\xad\x80\xef\xad\x81\xef\xad\x83\xef\xad\x84\xef\xad\x86\x2d\xef\xae\xb1\xef\xaf\x93\x2d\xef\xb4\xbd\xef\xb5\x90\x2d\xef\xb6\x8f\xef\xb6\x92\x2d\xef\xb7\x87\xef\xb7\xb0\x2d\xef\xb7\xbb\xef\xb9\xb0\x2d\xef\xb9\xb4\xef\xb9\xb6\x2d\xef\xbb\xbc\xef\xbc\xa1\x2d\xef\xbc\xba\xef\xbd\x81\x2d\xef\xbd\x9a\xef\xbd\xa6\x2d\xef\xbe\xbe\xef\xbf\x82\x2d\xef\xbf\x87\xef\xbf\x8a\x2d\xef\xbf\x8f\xef\xbf\x92\x2d\xef\xbf\x97\xef\xbf\x9a\x2d\xef\xbf\x9c]+/ui'; // match latin characters |
|
$f = preg_replace($regex, " ", $e); |
|
$f = preg_replace('/^ +/', '', $f); |
|
$f = preg_replace('/ +$/', '', $f); |
|
$d = 0; |
|
if($f !== "") { |
|
$d = count(explode(" ", $f)); |
|
} |
|
return $d; |
|
} |
|
|
|
public static function debug($data) { |
|
echo '<pre>'.print_r($data, true).'</pre>'; |
|
} |
|
|
|
} |