diff --git a/wp-includes/media.php b/wp-includes/media.php index f04ae19164..cb2f25f98d 100644 --- a/wp-includes/media.php +++ b/wp-includes/media.php @@ -3220,16 +3220,22 @@ function get_attached_media( $type, $post = 0 ) { */ function get_media_embedded_in_content( $content, $types = null ) { $html = array(); - $allowed_media_types = array( 'audio', 'video', 'object', 'embed', 'iframe' ); + + $allowed_media_types = apply_filters( 'get_media_embedded_in_content_allowed', array( 'audio', 'video', 'object', 'embed', 'iframe' ) ); + if ( ! empty( $types ) ) { - if ( ! is_array( $types ) ) + if ( ! is_array( $types ) ) { $types = array( $types ); + } + $allowed_media_types = array_intersect( $allowed_media_types, $types ); } - foreach ( $allowed_media_types as $tag ) { - if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $content, $matches ) ) { - $html[] = $matches[0]; + $tags = implode( '|', $allowed_media_types ); + + if ( preg_match_all( '#<(?P' . $tags . ')[^<]*?(?:>[\s\S]*?<\/(?P=tag)>|\s*\/>)#', $content, $matches ) ) { + foreach ( $matches[0] as $match ) { + $html[] = $match; } } diff --git a/wp-includes/version.php b/wp-includes/version.php index 904a48837b..4f41878f7f 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.2-alpha-31573'; +$wp_version = '4.2-alpha-31574'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.