groover Posted September 16, 2006 Share Posted September 16, 2006 Hi everyone.I would like to ask, how can I remove all the empty HTML tags from a user input?I want to remove things like the following:[code]<b> </b><p align=center>\n \n</p><div><br>\n <i></i></div>[/code]How can I do it?Thanks first. Quote Link to comment Share on other sites More sharing options...
effigy Posted September 18, 2006 Share Posted September 18, 2006 Try this:[code]<pre><?php $tests = array( ### Empty. '<b> </b>', "<p align=center>\n \n</p>", "<div><br>\n <i></i></div>", '<font> </font>', '<body></body>', ### Not Empty. '<div>content</div>', "<span>line\nbreak</span>", '<b>a</b>', ); function remove_empties ($matches) { ### Variableize the stuff between the tags. $content = $matches[2]; ### Remove all nbsps, empty tags, brs, and whitespace. $content = str_replace(' ', '', $content); $content = preg_replace('%<(\w+)[^>]*></\1>%', '', $content); $content = preg_replace('%<br/?>%', '', $content); $content = preg_replace('/\s/s', '', $content); ### If there is still content the tag innards are not empty, ### send back the original match. Otherwise, send empty. return $content ? $matches[0] : '' ; } echo '<table border="1">'; foreach ($tests as $test) { echo '<tr><td>', htmlentities($test), '</td>'; $test = preg_replace_callback('% <(\w+)[^>]*> (.*?) </\1> %xs', 'remove_empties', $test); echo '<td>', htmlentities($test), '</td></tr>'; } echo '</table>';?></pre>[/code] Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.