diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php
index 56aac4ca29..4aa2cd3183 100644
--- a/src/wp-includes/formatting.php
+++ b/src/wp-includes/formatting.php
@@ -3243,7 +3243,7 @@ function links_add_target( $content, $target = '_blank', $tags = array('a') ) {
global $_links_add_target;
$_links_add_target = $target;
$tags = implode('|', (array)$tags);
- return preg_replace_callback( "!<($tags)(.+?)>!i", '_links_add_target', $content );
+ return preg_replace_callback( "!<($tags)([^>]*)>!i", '_links_add_target', $content );
}
/**
@@ -3258,7 +3258,7 @@ function links_add_target( $content, $target = '_blank', $tags = array('a') ) {
function _links_add_target( $m ) {
global $_links_add_target;
$tag = $m[1];
- $link = preg_replace('|(target=([\'"])(.*?)\2)|i', '', $m[2]);
+ $link = preg_replace('|( target=([\'"])(.*?)\2)|i', '', $m[2]);
return '<' . $tag . $link . ' target="' . esc_attr( $_links_add_target ) . '">';
}
diff --git a/tests/phpunit/tests/formatting/LinksAddTarget.php b/tests/phpunit/tests/formatting/LinksAddTarget.php
new file mode 100644
index 0000000000..fdf4003f9d
--- /dev/null
+++ b/tests/phpunit/tests/formatting/LinksAddTarget.php
@@ -0,0 +1,84 @@
+ SOME ADDITIONAL TEXT LINK HERE END TEXT',
+ null,
+ null,
+ 'MY CONTENT
SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ null,
+ null,
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
LINKEND TEXT',
+ null,
+ null,
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
LINKEND TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ "_top",
+ null,
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ "_top",
+ array( 'span'),
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ "_top",
+ array( 'SPAN'),
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ "_top",
+ array( 'span', 'div'),
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ "_top",
+ array( 'span', 'div'),
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ array (
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT',
+ "_top",
+ array( 'span'),
+ 'MY CONTENT SOME ADDITIONAL TEXT
LINK HERE
END TEXT'
+ ),
+ );
+ }
+
+ /**
+ * Validate the normalize_whitespace function
+ *
+ * @dataProvider get_input_output
+ */
+ function test_normalize_whitespace( $content, $target, $tags, $exp_str ) {
+ if ( true === is_null( $target ) ) {
+ $this->assertEquals( $exp_str, links_add_target( $content ) );
+ } elseif ( true === is_null( $tags ) ) {
+ $this->assertEquals( $exp_str, links_add_target( $content, $target ) );
+ } else {
+ $this->assertEquals( $exp_str, links_add_target( $content, $target, $tags ) );
+ }
+ }
+}
\ No newline at end of file