|
Posted by gosha bine on 05/23/07 15:02
On 23.05.2007 15:37 semi_evil@inbox.com wrote:
> I'm trying to achieve the following:
>
> start form entry
> user enters form data and submits ($form_data)
> preg_match_all data for $pattern, store matches in $match_arr
> if one or more matches
> display string back to user, with matched substrings in different
> color/emphasis
> start form entry again
> else continue
>
> my initial solution to recontructing the string:
> // if 1 match
> preg_replace ($pattern,'<em>'.$match_arr[0][0].'</em>',$form_data,1);
> // if multiple matches
> preg_replace ($pattern,'<em>'.$match_arr[0].'</em>',$form_data,-1);
>
> ..but the latter doesn't work the way I hoped. When the replace var is
> an array $pattern also must be an array for preg_replace to use the
> different array values in $replace.
>
> Any ideas how to get around this problem in an elegant manner? Or an
> alternative solution altogether? I searched for a function/solution
> that tells me at which position preg_match_all() found a match, so I
> can avoid the preg_replace altogether, but I haven't found any.
>
> cheers,
> Semi
>
I think you're looking for PREG_OFFSET_CAPTURE flag (see preg_match_all
manual page).
--
gosha bine
extended php parser ~ http://code.google.com/p/pihipi
blok ~ http://www.tagarga.com/blok
[Back to original message]
|