Index: src/wp-includes/functions.php
===================================================================
--- src/wp-includes/functions.php	(revision 43311)
+++ src/wp-includes/functions.php	(working copy)
@@ -3652,11 +3652,7 @@
  * @return array Sanitized array of IDs.
  */
 function wp_parse_id_list( $list ) {
-	if ( ! is_array( $list ) ) {
-		$list = preg_split( '/[\s,]+/', $list );
-	}
-
-	return array_unique( array_map( 'absint', $list ) );
+	return array_unique( array_map( 'absint', wp_parse_list( $list ) ) );
 }
 
 /**
@@ -3668,12 +3664,36 @@
  * @return array Sanitized array of slugs.
  */
 function wp_parse_slug_list( $list ) {
+	$list = wp_parse_list( $list );
+	foreach ( $list as $key => $value ) {
+		$list[ $key ] = sanitize_title( $value );
+	}
+
+	return array_unique( $list );
+}
+
+/**
+ * Clean up an array, comma- or space-separated list.
+ *
+ * Duplicate values are filtered out by default.
+ * Use format 'filter_false' to also filter out all the values that equal to false.
+ * For example: '', '0', 0, false, null, array()
+ *
+ * @since X.X.X
+ *
+ * @param array|string $list   List.
+ * @param string       $format List format. Accepts 'raw' or 'filter_false'.
+ * @return array Parsed list.
+ */
+function wp_parse_list( $list, $format = '' ) {
 	if ( ! is_array( $list ) ) {
-		$list = preg_split( '/[\s,]+/', $list );
+		$list = preg_split( '/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY );
 	}
 
-	foreach ( $list as $key => $value ) {
-		$list[ $key ] = sanitize_title( $value );
+	if ( 'raw' === $format ) {
+		return $list;
+	} elseif ( 'filter_false' === $format ) {
+		$list = array_filter( $list );
 	}
 
 	return array_unique( $list );
Index: tests/phpunit/tests/functions.php
===================================================================
--- tests/phpunit/tests/functions.php	(revision 43311)
+++ tests/phpunit/tests/functions.php	(working copy)
@@ -550,6 +550,20 @@
 	}
 
 	/**
+	 * @dataProvider data_wp_parse_list_formatted_with_filter_false
+	 */
+	function test_wp_parse_list_formatted_with_filter_false( $expected, $actual ) {
+		$this->assertSame( $expected, array_values( wp_parse_list( $actual, 'filter_false' ) ) );
+	}
+
+	function data_wp_parse_list_formatted_with_filter_false() {
+		return array(
+			array( array(), array( '', '0', 0, false, null, array() ) ),
+			array( array( '1', '2', '3', '4' ), ' 1,,2 3  ,0 4 2 ' ),
+		);
+	}
+
+	/**
 	 * @dataProvider data_wp_parse_id_list
 	 */
 	function test_wp_parse_id_list( $expected, $actual ) {
@@ -559,6 +573,7 @@
 	function data_wp_parse_id_list() {
 		return array(
 			array( array( 1, 2, 3, 4 ), '1,2,3,4' ),
+			array( array( 1, 2, 3, 4 ), ' 1,2,3,4' ),
 			array( array( 1, 2, 3, 4 ), '1, 2,,3,4' ),
 			array( array( 1, 2, 3, 4 ), '1,2,2,3,4' ),
 			array( array( 1, 2, 3, 4 ), array( '1', '2', '3', '4', '3' ) ),
@@ -578,6 +593,7 @@
 	function data_wp_parse_slug_list() {
 		return array(
 			array( array( 'apple', 'banana', 'carrot', 'dog' ), 'apple,banana,carrot,dog' ),
+			array( array( 'apple', 'banana', 'carrot', 'dog' ), ' apple,banana,carrot,dog' ),
 			array( array( 'apple', 'banana', 'carrot', 'dog' ), 'apple, banana,,carrot,dog' ),
 			array( array( 'apple', 'banana', 'carrot', 'dog' ), 'apple banana carrot dog' ),
 			array( array( 'apple', 'banana-carrot', 'd-o-g' ), array( 'apple ', 'banana carrot', 'd o g' ) ),
