diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 09beb7373e..c39b479e14 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -492,7 +492,8 @@ function wpautop( $pee, $br = true ) { // Change multiple
s into two line breaks, which will turn into paragraphs. $pee = preg_replace( '|\s*|', "\n\n", $pee ); - $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; + $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)\b'; + $allblocksexceptp = str_replace( '|p|', '|', $allblocks ); // Add a double line break above block-level opening tags. $pee = preg_replace( '!(<' . $allblocks . '[\s/>])!', "\n\n$1", $pee ); @@ -558,12 +559,12 @@ function wpautop( $pee, $br = true ) { // Under certain strange conditions it could create a P of entirely whitespace. $pee = preg_replace( '|

\s*

|', '', $pee ); - // Add a closing

inside

,
, or
tag if missing. - $pee = preg_replace( '!

([^<]+)!', '

$1

', $pee ); - // If an opening or closing block element tag is wrapped in a

, unwrap it. $pee = preg_replace( '!

\s*(]*>)\s*

!', '$1', $pee ); + // Add a closing

inside

,
, or tag if missing. + $pee = preg_replace( '!

([^<]+)!', '

$1

', $pee ); + // In some cases
  • may get wrapped in

    , fix them. $pee = preg_replace( '|

    (|', '$1', $pee ); @@ -577,6 +578,12 @@ function wpautop( $pee, $br = true ) { // If an opening or closing block element tag is followed by a closing

    tag, remove it. $pee = preg_replace( '!(]*>)\s*

    !', '$1', $pee ); + // If a closing

    tag is inside a block element tag, without a preceding opening

    tag, remove it. + $pee = preg_replace( '#(<(' . $allblocksexceptp . ')[^>]*>)(((?!

    |).)*)

    #s', '$1$3', $pee ); + + // If an opening

    tag is inside a block element tag, without a following closing

    tag, remove it. + $pee = preg_replace( '#

    (((?!

    ).)*)#s', '$1', $pee ); + // Optionally insert line breaks. if ( $br ) { // Replace newlines that shouldn't be touched with a placeholder. diff --git a/wp-includes/version.php b/wp-includes/version.php index e1cc93043a..80dac2b2d4 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.3-alpha-45584'; +$wp_version = '5.3-alpha-45585'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.