RE: removing text from a string

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2008-11-04 at 13:53 -0600, 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
> 
If you notice the original question, the list only goes up to 340, so
that works fine, and he wants to match the whole line, not just part of
it, as the g modifier makes it match multiple lines. Sorry that i got
the start and end line matches the wrong way round, i always seem to do
that!


Ash
www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux