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. Link to comment https://forums.phpfreaks.com/topic/20964-to-remove-empty-html-tags/ 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] Link to comment https://forums.phpfreaks.com/topic/20964-to-remove-empty-html-tags/#findComment-94165 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.