Make WordPress Core


Ignore:
Timestamp:
11/08/2013 10:37:41 PM (12 years ago)
Author:
wonderboymusic
Message:

Don't convert URLs inside <pre> and <code> tags when parsing string using make_clickable().
Adds Unit Tests.

Props johnjamesjacoby, helen, nacin, adamsilverstein, sirbrillig.
Fixes #23756.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/formatting.php

    r26050 r26052  
    16071607    $r = '';
    16081608    $textarr = preg_split( '/(<[^<>]+>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // split out HTML tags
     1609    $nested_code_pre = 0; // Keep track of how many levels link is nested inside <pre> or <code>
    16091610    foreach ( $textarr as $piece ) {
    1610         if ( empty( $piece ) || ( $piece[0] == '<' && ! preg_match('|^<\s*[\w]{1,20}+://|', $piece) ) ) {
     1611
     1612        if ( preg_match( '|^<code[\s>]|', $piece ) || preg_match( '|^<pre[\s>]|', $piece ) )
     1613            $nested_code_pre++;
     1614        elseif ( ( '</code>' === $piece || '</pre>' === $piece ) && $nested_code_pre )
     1615            $nested_code_pre--;
     1616
     1617        if ( $nested_code_pre || empty( $piece ) || ( $piece[0] === '<' && ! preg_match( '|^<\s*[\w]{1,20}+://|', $piece ) ) ) {
    16111618            $r .= $piece;
    16121619            continue;
Note: See TracChangeset for help on using the changeset viewer.