['; print_r($par); echo ']'; $par = ParseArgs($par); $par = $par['']; # if(!$par[1]) return ''; ## Retrieve page text. $page = ReadPage(MakePageName($pagename,$par[0])); $page = $page['text']; ## Compress whitespaces. $page = preg_replace( '/\s+/', ' ', $page ); ## Find searched term. $term = preg_replace( array( '/[^\\w\\x80-\\xff]+/', '/\s+/' ), array( ' ', '[^\\w\\x80-\\xff]+' ), html_entity_decode( trim( $par[1] ) ) ); # Case-insensitive search (stripos() is available only since PHP 5.0) # Unfortunately, UTF-8 is still case-sensitive. $matches = array(); $i = preg_match( "/(.{0,$ExcerptSideWidth})($term)(.{0,$ExcerptSideWidth})/i", $page, $matches ); if($i===0) return ''; return Keep( '...'.PHSC($matches[1]).''. PHSC($matches[2]).''. PHSC($matches[3]).'...'); } ########### ## A list of page excerpts. ########### Markup('excerpts','['; print_r($par); echo ']'; $par=ParseArgs($par); $par=$par['']; $page=$par[0]; $res=array_filter(array_slice($par,1), 'ExcerptsFilter'); if(!$res) return ''; # array_walk($res,create_function('$t,$k,$p','$t="(:excerpt $p $t:)";'),$page); $pre="(:excerpt $page '"; $post="':)"; return $pre . implode( $post.Keep('
').$pre, $res ) . $post; } function ExcerptsFilter($x) { return !ctype_space($x); }