Re: Re: Trimming Text

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

 



I've succeded on doing this task :)

I had to make a few assumptions (like HTML is formatted correctly),
but, other than that, it worked just fine.

I'll post the code on monday.

Thanks for all your help guys. You've been GRRRREAT (you know... like
Tony says ;) )

On 7/17/05, Al <news@xxxxxxxxxxxxx> wrote:
> Al wrote:
> > André Medeiros wrote:
> >
> >> Greetings.
> >>
> >> I am trying to trim some text containing HTML tags. What I want to do is
> >> to trim the text without trimming the tags or html entities like &nbsp;
> >> and such, wich completelly break the design.
> >>
> >> Has anyone succeded on doing such a thing? phpclasses.org won't help :(
> >>
> >> Thanks in advance.
> >> André
> >
> >
> > Consider...
> >
> > Making a preg pattern to capture everything between tags and then use
> > preg_replace_callback() process the "captured text" with the called
> > function.
> >
> > It will work; but it's a bit tricky.
> >
> > Here is a similiar code snip to get you started...
> >
> > $pattern= "%<[\w-/]+>%";
> >
> > $text=
> > preg_replace_callback($pattern,
> > create_function('$matches', 'return strtolower($matches[0]);'), $text);
> >
> > This converts all tags to lowercase.
> >
> > You probably should use a regular callback function rather than creating
> > one.
> 
> 
> Here is a pattern that will get you close
> $pattern= "%(<[\s\S]+?>)([\s\S]+?)(</[\s\S]+?>)%";
> 
> The first bracket will get your first tag; second bracket, your text; third, the end tag.
> 
> Try this...
> 
> $num= preg_match_all("$pattern", $your_string, $matches);
> 
> print_r($matches);
> 
> I didn't test this; but, you should see all your tags and text neatly in an array.
> 
> You can then use foreach($matches[x] $key=>$value) {
> 
>         your code to trim, etc.
> 
>         $new_array[$key}= $new_string;
> }
> 
>  From the print_r() you can see what "x should be.  And, you'll need to reassemble your $new_array.
> 
> Finally, reconstruct your output string with another foreach()
> 
> The preg_replace_callback() will do all the foreach() stuff in one line.  Your argument for the
> callback function will be "x".
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
>

-- 
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