tags:

views:

2238

answers:

4

How can I use php to strip all/any attributes from a tag, say a paragraph tag?

<p class="one" otherrandomattribute="two"> to <p>
+1  A: 

HTML Purifier is one of the better tools for sanitizing HTML with PHP.

pd
+1  A: 

If you know what tags will be used regexps should help.

Scott Herbert
+3  A: 

http://www.mt-soft.com.ar/2007/12/21/strip-tag-attributes-php/

TStamper
The mess of code available there uses the string manipulation functions in PHP to do something that would be much better handled by DOM manipulation or even regular expressions.
coreyward
+4  A: 

Although there are better ways, you could actually strip arguments from html tags with a regular expression:

<?php
function stripArgumentFromTags( $htmlString ) {
    $regEx = '/([^<]*<\s*[a-z](?:[0-9]|[a-z]{0,9}))(?:(?:\s*[a-z\-]{2,14}\s*=\s*(?:"[^"]*"|\'[^\']*\'))*)(\s*\/?>[^<]*)/i'; // match any start tag

    $chunks = preg_split($regEx, $htmlString, -1,  PREG_SPLIT_DELIM_CAPTURE);
    $chunkCount = count($chunks);

    $strippedString = '';
    for ($n = 1; $n < $chunkCount; $n++) {
     $strippedString .= $chunks[$n];
    }

    return $strippedString;
}
?>

The above could probably be written in less characters, but it does the job (quick and dirty).

Jacco