wp/lib/blobfolio/wp/bm/admin.php
protected static function parse_readme_contributors($file) {
		if (!$file || !@is_file($file)) {
			return false;
		}

		require_once (ABSPATH . 'wp-admin/includes/file.php');

		// This can actually be parsed the same way plugin index files
		// are. Neat!
		$headers = get_file_data($file, array('Contributors'=>'Contributors'));
		if (isset($headers['Contributors'])) {
			// These are comma-separated, so let's array-ize them and
			// clean it up a bit.
			$headers['Contributors'] = explode(',', $headers['Contributors']);
			foreach ($headers['Contributors'] as $k=>$v) {
				$headers['contributors'][$k] = trim($v);
				if (!$v) {
					unset($headers['contributors'][$k]);
				}
			}

			// We should have at least one!
			if (count($headers['contributors'])) {
				$headers['contributors'] = array_unique($headers['contributors']);
				sort($headers['contributors']);
				return $headers['contributors'];
			}
		}

		// No go.
		return false;
	}
protected static function parse_readme_contributors($file) {
		if (!$file || !@is_file($file)) {
			return false;
		}

		require_once (ABSPATH . 'wp-admin/includes/file.php');

		// This can actually be parsed the same way plugin index files
		// are. Neat!
		$headers = get_file_data($file, array('Contributors'=>'Contributors'));
		if (isset($headers['Contributors'])) {
			// These are comma-separated, so let's array-ize them and
			// clean it up a bit.
			$headers['Contributors'] = explode(',', $headers['Contributors']);
			foreach ($headers['Contributors'] as $k=>$v) {
				$headers['contributors'][$k] = trim($v);
				if (!$v) {
					unset($headers['contributors'][$k]);
				}
			}

			// We should have at least one!
			if (count($headers['contributors'])) {
				$headers['contributors'] = array_unique($headers['contributors']);
				sort($headers['contributors']);
				return $headers['contributors'];
			}
		}

		// No go.
		return false;
	}
Parse Readme Contributors

@param string $file File.
@return array|bool Contributors or false.