sanitize_title_with_dashes( string $title, string $raw_title = '', string $context = 'display' )
Sanitizes a title, replacing whitespace and a few other characters with dashes.
Description Description
Limits the output to alphanumeric characters, underscore (_) and dash (-). Whitespace becomes a dash.
Parameters Parameters
- $title
-
(string) (Required) The title to be sanitized.
- $raw_title
-
(string) (Optional) Not used.
Default value: ''
- $context
-
(string) (Optional) The operation for which the string is sanitized.
Default value: 'display'
Return Return
(string) The sanitized title.
Source Source
File: wp-includes/formatting.php
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;
}
Expand full source code Collapse full source code View on Trac
Changelog Changelog
| Version | Description |
|---|---|
| 1.2.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Basic Example
<?php echo sanitize_title_with_dashes("I'm in LOVE with WordPress!!!1"); // this will print: im-in-love-with-wordpress1 ?>Add Current Child-Site Body Class – WordPress Multisite
// Add Current Child-Site Body Class – Wordpress Multisite function childSiteClass( $classes ) { global $current_blog; $site_title = sanitize_title_with_dashes( get_bloginfo('name') ); $classes[] = 'website-'.$site_title; return $classes; } add_filter( 'body_class', 'childSiteClass' );