minPar,$this->maxPar); $k = count($sentences)-1; $p = ($p < $k)?$p:$k; shuffle($sentences); $rkeys = array_rand($sentences, $p ); $par=''; foreach($rkeys as $rk) { $par .= $sentences[$rk]; } $pars[]=$par; } return $pars; } public function sentences($str,$min=null,$max=null) { $str = preg_replace("@\s+@"," ",$d); $sens = $this->splitSentences($d); return $sens; } public function filterLength($arr,$min=null,$max=null) { foreach($arr as $i => $a) { $k = strlen($a); if(!is_null($min)) if($k < $min) unset($a[$i]); if(!is_null($max)) if($k > $max) unset($a[$i]); } return $arr; } public function splitWords($str) { $words= array(); preg_match_all("@(\w)@",$str,$m); $words = $m[1]; return $words; } public function splitPars($str) { $str = preg_replace("@\s+@"," ",$d); $paragraphs= array(); $paragraphs = preg_split('@\r\n\r\n|\n\n|<\s*br\s*\?\s*>\s*<\s*br\s*\?\s*>|<\s*/\s*p\s*>.*?<\s*p\s*>@i',$str); return $paragraphs; } public function splitSentences($str) { // abbreviations to skip $skips = array ( 'Jr', 'Mr', 'Mrs', 'Ms', 'Dr', 'Prof', 'Sr' , 'jr', 'mr', 'mrs', 'ms', 'dr', 'prof', 'sr' , 'col','gen', 'lt', 'cmdr', 'dept', 'univ', 'inc', 'ltd', 'arc', 'al', 'ave', 'cl', 'ct', 'cres', 'dr', 'la', 'pl', 'plz', 'rd', 'tce', 'Ala' , 'Ariz', 'Ark', 'Cal', 'Calif', 'Col', 'Colo', 'Conn', 'Del', 'Fed' , 'Fla', 'Ga', 'Ida', 'Id', 'Ill', 'Ind', 'Ia', 'Kan', 'Kans', 'Ken', 'Ky' , 'La', 'Me', 'Md', 'Is', 'Mass', 'Mich', 'Minn', 'Miss', 'Mo', 'Mont', 'Neb', 'Nebr' , 'Nev', 'Mex', 'Okla', 'Ok', 'Ore', 'Oreg', 'Penna', 'Penn', 'Pa' , 'Dak', 'Tenn', 'Tex', 'Ut', 'Vt', 'Va', 'Wash', 'Wis', 'Wisc', 'Wy', 'Wyo', 'USAFA', 'Alta' , 'Man', 'Ont', 'Que', 'Sask', 'Yuk'. 'jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec', 'sept', 'vs', 'etc', 'no', ); // build regex string $skip = ''; foreach($skips as $abbr) { $skip .= '|\s{1}'.$abbr.'[.!?]'; } $skip = '/(?i