original question jalist:
> > I'm trying to grab a string from within a string based on a matching word
> > or phrase. 

In the middle of the night i was thinking hey, why not use a regexp,
look for the pattern word-space-word-space-SEARCHWORD-space-word-space-word
something like 

$toshow = 
        regexp ( "( [alphanum]+ [alphanum]+ [$YOURWORD] [alphanum]+ [alphanum]+ 
)", $totalstring);


I am totally bad with regexps, but that 's the idea. Might be faster than 
the array? You'll have to take care of comma's etc.




From:                   "jalist" <[EMAIL PROTECTED]>
To:                     "PHP" <[EMAIL PROTECTED]>
Date sent:              Thu, 18 Jan 2001 16:12:31 -0000
Subject:                RE: [PHP] (Newbie) String within a string

> Excellent, thanks a lot Chris.
> 
> Steve
> (jalist)
> [EMAIL PROTECTED]
> http://ls2k.org
> 
> -----Original Message-----
> From: Chris Hayes [mailto:[EMAIL PROTECTED]]
> Sent: 18 January 2001 15:43
> To: jalist; PHP
> Subject: Re: [PHP] (Newbie) String within a string
> 
> 
> 
> jalist:
> > I'm trying to grab a string from within a string based on a matching word
> or
> > phrase. Example...
> 
> You say you want the middle, not two words before and two words after.
> 
> I see several ways.
> 
> 
>  1. Explode into an word-array and use that:
>  1. prepare string
>    a) add spaces after comma's and fullstops by some replace
>     operation (replace ',' by ', ').
>    b) remove double spaces
>  2. split to an array using explode (space as string separator)
>   Now you have every word in a separate place in the array
>  3. Get # of words by count($array)
>     4. Divide by two and get nearest integer (hence floor and +0.5!)
>   $mid= floor(count($array)/2 + 0.5)
>   OH NO, correction, that's the middle, you wanted a specific word.
>   I'm afraid you'll have to walk thorugh the array to find the word
>   you need.
> 
>    for (i=0;i<count($array);i++)
>    {
>    if ($array[$i]==$searchword)
>     {   $fragment= "...".
>       $array[$mid-2] ." "
>        $array[$mid-1] ." "
>       $array[$mid]   ." "
>       $array[$mid+1] ." "
>       $array[$mid+2] ."...";
>       ##extra job for you: make sure  $i >= 2
>      ##                                                       and $i <= count-2
>      ## or you'll get an error
> 
>     [exit the for loop somehow, maybe drop
>      this in a function and RETURN;]
>     }
> 
>    }
> 
> 
> 
> OR
> 
>  2. Continue with the strpos and strrpos, organize it a bit better.
>  For instance find the middle of the string. Split at nearest
>  space in leftstring and rightstring.
> 
>   Make a function chop_last_word, chop last two or three words from
>   leftstring and add to resultstring in right order.
> 
>   Same for rightstring.
> 
>      I think the array way is cleaner.
> 
> Chris
> 
> --------------------------------------------------------------------
> --  C.Hayes  Droevendaal 35  6708 PB Wageningen  the Netherlands  --
> --------------------------------------------------------------------
> 
> 
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------
--  C.Hayes  Droevendaal 35  6708 PB Wageningen  the Netherlands  --
--------------------------------------------------------------------

 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to