--- Wade Smart <[EMAIL PROTECTED]> wrote:

> 03112006 1401 GMT-6
> 
> Im trying write a script that will do this:
>     I provide a directory location. The script scans all the files in a 
> directory, oldest to newest. In each file it looks for the word [QUOTE]. 
> It counts forward until it finds [/QUOTE]. Then it copies the counted 
> characters. It opens a file titled quotes.txt and runs a scan to see if 
> that particular quote is in there. If it is not, it pastes it. If it is, 
> it drops that copied text and returns to the scan.
> 
> Im a bit stuck on the copy part. Once I find the text, how do I copy it?
> 
> wade

This is basically a regular expression issue.  You want to search for some 
starting and ending
string and capture the content between these strings.

$content = join("",file("somefilename"));
$regex = "|\[QUOTE\](.*?)\[/QUOTE\]|is";
if(preg_match($regex, $content, $matches))
{
 print "Match found:<br>\n";
 print $matches[1];
}

Note that my regex uses vertical bars instead of the forward slash to determine 
the start and end
of the expression.  This means we don't have to escape the forward slash.  
However, since the
square brackets have special meaning in regex, those do have to be escaped to 
use them as literal
characters.  The modifiers at the end cause the match to ignore capitalization 
(i) and allow the
match to span multiple lines (s).

The .*? finds the shortest match between the two strings.  By placing this 
pattern in a
parentheses set the value found is stored in memory and available in the array 
designated in
preg_match.  The 0 element is the entire string containing a match (not often 
useful).  The 1 is
the first set of parentheses, 2 the second, and so on.

If you expect to have multiple occurrences of this pattern in your document, 
you will want to use
preg_match_all which will place the matches in a two-dimensional array.  There 
are two constants
used to determine the behavior of the function:  PREG_SET_ORDER and 
PREG_PATTERN_ORDER.  I usually
find PREG_SET_ORDER to be more useful.

Keep in mind that there may be a way to do this with a Linux Bash shell script 
as well.  There are
many regular expression tools and they can parse through multiple files faster 
than a PHP script
can, in general.  The utilities used are compiled C programs and this is a 
factor.  Plus, they
have a more direct connection to the filesystem than PHP does.

James
_____

James D. Keeline
http://www.Keeline.com  http://www.Keeline.com/articles
http://Stratemeyer.org  http://www.Keeline.com/TSCollection

http://www.ITeachPHP.com -- Free Computer Classes: Linux, PHP, etc.
Spring Semester January-June 2006.  Two new class topics.


Community email addresses:
  Post message: [email protected]
  Subscribe:    [EMAIL PROTECTED]
  Unsubscribe:  [EMAIL PROTECTED]
  List owner:   [EMAIL PROTECTED]

Shortcut URL to this page:
  http://groups.yahoo.com/group/php-list 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/php-list/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to