@param array $array The array. * @param bool $outerQuotes Whether outer quotes should be added. * @return string The imploded array. */ public function implodeWhereIn( $array, $outerQuotes = false ) { // Reset the keys first in case there is no 0 index. $array = array_values( $array ); if ( ! isset( $array[0] ) ) { return ''; } if ( is_numeric( $array[0] ) ) { return implode( ', ', $array ); } return $outerQuotes ? "'" . implode( "', '", $array ) . "'" : implode( "', '", $array ); } /** * Returns an imploded string of placeholders for usage in a WPDB prepare statement. * * @since 4.1.9 * * @param array $array The array. * @param string $placeholder The placeholder (e.g. "%s" or "%d"). * @return string The imploded string with placeholders. */ public function implodePlaceholders( $array, $placeholder = '%s' ) { return implode( ', ', array_fill( 0, count( $array ), $placeholder ) ); } /** * Verifies that a string is indeed a valid regular expression. * * @since 4.2.1 * * @return boolean True if the string is a valid regular expression. */ public function isValidRegex( $pattern ) { // Set a custom error handler to prevent throwing errors on a bad Regular Expression. set_error_handler( function() {}, E_WARNING ); $isValid = true; if ( false === preg_match( $pattern, '' ) ) { $isValid = false; } // Restore the error handler. restore_error_handler(); return $isValid; } /** * Removes the leading slash(es) from a string. * * @since 4.2.3 * * @param string $string The string. * @return string The modified string. */ public function unleadingSlashIt( $string ) { return ltrim( $string, '/' ); } /** * Convert the case of the given string. * * @since 4.2.4 * * @param string $string The string. * @param string $type The casing ("lower", "title", "sentence"). * @return string The converted string. */ public function convertCase( $string, $type ) { switch ( $type ) { case 'lower': return strtolower( $string ); case 'title': return $this->toTitleCase( $string ); case 'sentence': return $this->toSentenceCase( $string ); default: return $string; } } /** * Converts the given string to title case. * * @since 4.2.4 * * @param string $string The string. * @return string The converted string. */ public function toTitleCase( $string ) { // List of common English words that aren't typically modified. $exceptions = apply_filters( 'aioseo_title_case_exceptions', [ 'of', 'a', 'the', 'and', 'an', 'or', 'nor', 'but', 'is', 'if', 'then', 'else', 'when', 'at', 'from', 'by', 'on', 'off', 'for', 'in', 'out', 'over', 'to', 'into', 'with' ] ); $words = explode( ' ', strtolower( $string ) ); foreach ( $words as $k => $word ) { if ( ! in_array( $word, $exceptions, true ) ) { $words[ $k ] = ucfirst( $word ); } } $string = implode( ' ', $words ); return $string; } /** * Converts the given string to sentence case. * * @since 4.2.4 * * @param string $string The string. * @return string The converted string. */ public function toSentenceCase( $string ) { $phrases = preg_split( '/([.?!]+)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE ); $convertedString = ''; foreach ( $phrases as $index => $sentence ) { $convertedString .= ( $index & 1 ) === 0 ? ucfirst( strtolower( trim( $sentence ) ) ) : $sentence . ' '; } return trim( $convertedString ); } /** * Returns the substring with a given start index and length. * * @since 4.2.5 * * @param string $string The string. * @param int $startIndex The start index. * @param int $length The length. * @return string The substring. */ public function substring( $string, $startIndex, $length ) { return function_exists( 'mb_substr' ) ? mb_substr( $string, $startIndex, $length, $this->getCharset() ) : substr( $string, $startIndex, $length ); } }