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