Rene Fournier wrote: > Hi, I'm looking for some ideas on the best way to parse blocks of text > that is formatted such as: > > $sometext %\r\n -- good data > $otherstring %\r\n -- good data > $andyetmoretext %\r\n -- good data > $finaltext -- bad data (missing ending) > > Each line should start with a $dollar sign, then some arbitrary text, > ends with a percent sign, followed by carriage-return and line-feed. > Sometimes though, the final line is not complete. In that case, I want > to save those lines too. > > ....so that I end up with an array like: > > $result = array ( "matches" => > array ( 0 => "$sometext %\r\n", > 1 => "$otherstring %\r\n", > 2 => "$andyetmoretext %\r\n" > ), > "non_matches" => > array ( 3 => "$finaltext" > ) > ); > > The key thing here is that the line numbers are preserved and the > non-matched lines are saved... > > Any ideas, what's the best way to go about this? Preg_matc, preg_split > or something incorporating explode? > > ....Rene > Something along the line of this? <pre><?php $block_of_text = '$sometext %\r\n $otherstring %\r\n $andyetmoretext %\r\n $finaltext'; $lines = explode("\n", $block_of_text); $results = array(); foreach ( $lines AS $i => $line ) { if ( preg_match('|^\$.* %\\\r\\\n$|', $line ) ) { $results['matches'][$i] = $line; } else { $results['non_matches'][$i] = $line; } } print_r($results); ?> -- Jim Lucas "Some men are born to greatness, some achieve greatness, and some have greatness thrust upon them." Twelfth Night, Act II, Scene V by William Shakespeare -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php