Keys →
Functions ↓
function parse ( $inp, $an=0, $st=false ) {#-k string parse#- $inp - string to be parsed#- $an - 0 -'t' values are 'alpha', 'numeric' or 'sym' (default)#- - 1 -'t' values are 'alphanumeric' or 'sym'#- - 2 -'t' values are 'varsafe' or 'sym', where varsafe includes alphanumeric, '_' and '-'#- $st - add the stats to the end of the array (default false)#-#- return - array tokenized input, 't' = token; 'v' = value#- at top level, 'a', 'n' & 's' hold counts of categories, 't' contains optional tracking ##-d 2/11/21 updated to add $an options 1&2, and param $st $p = -1; $was = ''; $inp = ' ' . $inp . ' '; for ($i=1;$i<(strlen($inp)-2);$i++) { if (($an == 2) AND is_varsafe($inp{$i})) { if ($was == 'varsafe') { $pi[$p]['v'] .= $inp{$i}; } else { $was = 'varsafe'; $p++; $pi[$p]['v'] = $inp{$i}; $pi[$p]['t'] = $was; } } elseif (($an == 1) AND is_alphanum($inp{$i})) { if ($was == 'alphanumeric') { $pi[$p]['v'] .= $inp{$i}; } else { $was = 'alphanumeric'; $p++; $pi[$p]['v'] = $inp{$i}; $pi[$p]['t'] = $was; } } elseif (is_alpha($inp{$i})) { if ($was == 'alpha') { $pi[$p]['v'] .= $inp{$i}; } else { $was = 'alpha'; $p++; $pi[$p]['v'] = $inp{$i}; $pi[$p]['t'] = $was; } } elseif (is_numeric($inp{$i})) { if ($was == 'tracking') { $pi['t'] .= $inp{$i}; } elseif ($was == 'numeric') { $pi[$p]['v'] .= $inp{$i}; } else { $was = 'numeric'; $p++; $pi[$p]['v'] = $inp{$i}; $pi[$p]['t'] = $was; } } elseif (($inp{$i} == "'") and (is_alpha($inp{$i-1})) and ($inp{$i+1} == 's') and (is_special($inp{$i+2}))) { # strong's becomes strong $was = ''; $inp{$i+1} = ' '; } elseif ($inp{$i} == ' ') { $was = ''; } elseif ($inp{$i} == '~') { # tracking ID - strip out $was = 'tracking'; $pi['t'] = ''; } else { # punctuation $was = ''; $p++; $pi[$p]['v'] = $inp{$i}; $pi[$p]['t'] = 'sym'; } } $p++; if ($st) { $pi['a'] = $pi['n'] = $pi['s'] = 0; for ($i=0;$i<$p;$i++) { if ($pi[$i]['t'] == 'alpha') { $pi['a']++; } else if ($pi[$i]['t'] == 'numeric') { $pi['n']++; } else if ($pi[$i]['t'] == 'sym') { $pi['s']++; } } } return $pi; }?>