Boyd, Todd M. wrote: >> -----Original Message----- >> From: Ashley Sheridan [mailto:ash@xxxxxxxxxxxxxxxxxxxx] >> Sent: Tuesday, November 04, 2008 1:40 PM >> To: Adam Williams >> Cc: PHP General list >> Subject: Re: removing text from a string >> >> On Tue, 2008-11-04 at 08:04 -0600, Adam Williams wrote: >>> I have a file that looks like: >>> >>> 1. Some Text here >>> 2. Another Line of Text >>> 3. Yet another line of text >>> 340. All the way to number 340 >>> >>> And I want to remove the Number, period, and blank space at the >> begining >>> of each line. How can I accomplish this? >>> >>> Opening the file to modify it is easy, I'm just lost at how to > remove >>> the text.: >>> >>> <?php >>> $filename = "results.txt"; >>> >>> $fp = fopen($filename, "r") or die ("Couldn't open $filename"); >>> if ($fp) >>> { >>> while (!feof($fp)) >>> { >>> $thedata = fgets($fp); >>> //Do something to remove the "1. " >>> //print the modified line and \n >>> } >>> fclose($fp); >>> } >>> ?> >>> >> I'd go with a regular expression any day for something like this. >> Something like: >> >> "/$[0-9]{1,3}\.\ .*^/g" >> >> should do what you need. Note the space before the last period. > > That would only work for files with 1-999 lines, and will wind up > matching the entire line (since you used $ and ^ and a greedy .* > inbetween... also... $ is "end-of-line" and ^ is "beginning-of-line" :)) > rather than just the "line number" part. I would stick with my > originally-posted regex ("/^\d+\.\s/"), but I would modify yours like > this if I were to use it instead: > > "/^[0-9]+\.\ (.*)$/" (What was the "g" modifier for, anyway?) > > Then, you could grab the capture group made with (.*) and use it as the > "clean" data. (It would be group 1 in the match results and "$1" in a > preg_replace() call, I believe. Group 0 should be the entire match.) > > > Todd Boyd > Web Programmer > Personally, I would go this route if you wanted to stick with a regex. <?php $lines[] = '01. asdf'; $lines[] = '02. 323 asdf'; $lines[] = '03.2323 asdf'; $lines[] = '04. asdf 23'; $lines[] = '05. asdf'; /* tabs used here */ $lines[] = '06. asdf'; foreach ( $lines AS $line ) { echo preg_replace('/^[0-9]+\.\s*/', '', $line), "\n"; } ?> This takes care of all possible issues related to the char after the first period. Maybe it is there maybe not. Could be that it is a tab and not a space. Could even be multiple tabs or spaces. -- 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