Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Sanitizes a title, replacing whitespace and a few other characters with dashes.
- *
- * Limits the output to alphanumeric characters, underscore (_) and dash (-).
- * Whitespace becomes a dash.
- *
- * @since 1.2.0
- *
- * @param string $title The title to be sanitized.
- * @param string $raw_title Optional. Not used.
- * @param string $context Optional. The operation for which the string is sanitized.
- * @return string The sanitized title.
- */
- function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
- $title = strip_tags( $title );
- // Preserve escaped octets.
- $title = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title );
- // Remove percent signs that are not part of an octet.
- $title = str_replace( '%', '', $title );
- // Restore octets.
- $title = preg_replace( '|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title );
- if ( seems_utf8( $title ) ) {
- if ( function_exists( 'mb_strtolower' ) ) {
- $title = mb_strtolower( $title, 'UTF-8' );
- }
- $title = utf8_uri_encode( $title, 200 );
- }
- $title = strtolower( $title );
- if ( 'save' == $context ) {
- // Convert nbsp, ndash and mdash to hyphens
- $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
- // Convert nbsp, ndash and mdash HTML entities to hyphens
- $title = str_replace( array( ' ', ' ', '–', '–', '—', '—' ), '-', $title );
- // Convert forward slash to hyphen
- $title = str_replace( '/', '-', $title );
- // Strip these characters entirely
- $title = str_replace(
- array(
- // soft hyphens
- '%c2%ad',
- // iexcl and iquest
- '%c2%a1',
- '%c2%bf',
- // angle quotes
- '%c2%ab',
- '%c2%bb',
- '%e2%80%b9',
- '%e2%80%ba',
- // curly quotes
- '%e2%80%98',
- '%e2%80%99',
- '%e2%80%9c',
- '%e2%80%9d',
- '%e2%80%9a',
- '%e2%80%9b',
- '%e2%80%9e',
- '%e2%80%9f',
- // copy, reg, deg, hellip and trade
- '%c2%a9',
- '%c2%ae',
- '%c2%b0',
- '%e2%80%a6',
- '%e2%84%a2',
- // acute accents
- '%c2%b4',
- '%cb%8a',
- '%cc%81',
- '%cd%81',
- // grave accent, macron, caron
- '%cc%80',
- '%cc%84',
- '%cc%8c',
- ),
- '',
- $title
- );
- // Convert times to x
- $title = str_replace( '%c3%97', 'x', $title );
- }
- $title = preg_replace( '/&.+?;/', '', $title ); // kill entities
- $title = str_replace( '.', '-', $title );
- $title = preg_replace( '/[^%a-z0-9 _-]/', '', $title );
- $title = preg_replace( '/\s+/', '-', $title );
- $title = preg_replace( '|-+|', '-', $title );
- $title = trim( $title, '-' );
- return $title;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement