Make WordPress Core


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.6/wp-includes/kses.php

    r7969 r8385  
    432432        if ( $string == '' )
    433433            return '';
     434        // prevent multiple dashes in comments
     435        $string = preg_replace('/--+/', '-', $string);
     436        // prevent three dashes closing a comment
     437        $string = preg_replace('/-$/', '', $string);
    434438        return "<!--{$string}-->";
    435439    }
     
    534538 * or apostrophes around them, to make it easier to produce HTML code that will
    535539 * conform to W3C's HTML specification. It will also remove bad URL protocols
    536  * from attribute values.
     540 * from attribute values.  It also reduces duplicate attributes by using the
     541 * attribute defined first (foo='bar' foo='baz' will result in foo='bar').
    537542 *
    538543 * @since 1.0.0
     
    577582                    $working = 1;
    578583                    $mode = 0;
    579                     $attrarr[] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
     584                    if(FALSE === array_key_exists($attrname, $attrarr)) {
     585                        $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
     586                    }
    580587                    $attr = preg_replace('/^\s+/', '', $attr);
    581588                }
     
    590597                    $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols);
    591598
    592                     $attrarr[] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
     599                    if(FALSE === array_key_exists($attrname, $attrarr)) {
     600                        $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
     601                    }
    593602                    $working = 1;
    594603                    $mode = 0;
     
    602611                    $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols);
    603612
    604                     $attrarr[] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n');
     613                    if(FALSE === array_key_exists($attrname, $attrarr)) {
     614                        $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n');
     615                    }
    605616                    $working = 1;
    606617                    $mode = 0;
     
    614625                    $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols);
    615626
    616                     $attrarr[] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
     627                    if(FALSE === array_key_exists($attrname, $attrarr)) {
     628                        $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
     629                    }
    617630                    # We add quotes to conform to W3C's HTML spec.
    618631                    $working = 1;
     
    631644    } # while
    632645
    633     if ($mode == 1)
     646    if ($mode == 1 && FALSE === array_key_exists($attrname, $attrarr))
    634647        # special case, for when the attribute list ends with a valueless
    635648        # attribute like "selected"
    636         $attrarr[] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
     649        $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
    637650
    638651    return $attrarr;
Note: See TracChangeset for help on using the changeset viewer.