WordPress.org

Make WordPress Core

Ticket #1597: 1597.diff

File 1597.diff, 2.4 KB (added by coffee2code, 8 years ago)

Aforementioned patch.

  • wp-includes/formatting.php

     
     1
    12<?php
    23/**
    34 * Main WordPress Formatting API.
     
    993994        $stacksize = 0;
    994995        $tagqueue = '';
    995996        $newtext = '';
    996         $single_tags = array('br', 'hr', 'img', 'input'); // Known single-entity/self-closing tags
     997        $single_tags = array('area', 'base', 'basefont', 'br', 'col', 'command', 'embed', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param', 'source'); // Known single-entity/self-closing tags
    997998        $nestable_tags = array('blockquote', 'div', 'span'); // Tags that can be immediately nested within themselves
    998999
    9991000        // WP bug fix for comments - in case you REALLY meant to type '< !--'
     
    10411042
    10421043                        // Tag Cleaning
    10431044
    1044                         // If self-closing or '', don't do anything.
    1045                         if ( substr($regex[2],-1) == '/' || $tag == '' ) {
     1045                        // If it's an empty tag "< >", do nothing
     1046                        if ( '' == $tag ) {
    10461047                                // do nothing
    10471048                        }
     1049                        // ElseIf it presents itself as a self-closing tag...
     1050                        elseif ( substr($regex[2],-1) == '/' ) {
     1051                                // ...but it isn't a known single-entity self-closing tag, then don't let it be treated as such and
     1052                                // immediately close it with a closing tag (the tag will encapsulate no text as a result)
     1053                                if ( !in_array($tag, $single_tags) )
     1054                                        $regex[2] = substr($regex[2], 0, -1) . "></$tag";
     1055                        }
    10481056                        // ElseIf it's a known single-entity tag but it doesn't close itself, do so
    10491057                        elseif ( in_array($tag, $single_tags) ) {
    10501058                                $regex[2] .= '/';
    1051                         } else {        // Push the tag onto the stack
     1059                        }
     1060                        // Else it's not a single-entity tag
     1061                        else {
    10521062                                // If the top of the stack is the same as the tag we want to push, close previous tag
    10531063                                if ( $stacksize > 0 && !in_array($tag, $nestable_tags) && $tagstack[$stacksize - 1] == $tag ) {
    1054                                         $tagqueue = '</' . array_pop ($tagstack) . '>';
     1064                                        $tagqueue = '</' . array_pop($tagstack) . '>';
    10551065                                        $stacksize--;
    10561066                                }
    1057                                 $stacksize = array_push ($tagstack, $tag);
     1067                                $stacksize = array_push($tagstack, $tag);
    10581068                        }
    10591069
    10601070                        // Attributes
    10611071                        $attributes = $regex[2];
    10621072                        if( !empty($attributes) )
    1063                                 $attributes = ' '.$attributes;
     1073                                $attributes = ' ' . $attributes;
    10641074
    10651075                        $tag = '<' . $tag . $attributes . '>';
    10661076                        //If already queuing a close tag, then put this tag on, too