Untitled diff

Created Diff never expires
33 removals
50 lines
75 additions
55 lines
function wpse8170_sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
$title = strip_tags($title);
1580 $title = strip_tags($title);
// Preserve escaped octets.
1581 // Preserve escaped octets.
$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
1582 $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
// Remove percent signs that are not part of an octet.
1583 // Remove percent signs that are not part of an octet.
$title = str_replace('%', '', $title);
1584 $title = str_replace('%', '', $title);
// Restore octets.
1585 // Restore octets.
$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
1586 $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

1587
if (seems_utf8($title)) {
1588 if (seems_utf8($title)) {
if (function_exists('mb_strtolower')) {
1589 if (function_exists('mb_strtolower')) {
$title = mb_strtolower($title, 'UTF-8');
1590 $title = mb_strtolower($title, 'UTF-8');
}
1591 }
$title = utf8_uri_encode($title, 1000); // <--- here is the trick!
1592 $title = utf8_uri_encode($title, 200);
}
1593 }

1594
$title = strtolower($title);
1595 $title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
1596
$title = str_replace('.', '-', $title);
1597 if ( 'save' == $context ) {

1598 // Convert nbsp, ndash and mdash to hyphens
if ( 'save' == $context ) {
1599 $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
// Convert nbsp, ndash and mdash to hyphens
1600 // Convert nbsp, ndash and mdash HTML entities to hyphens
$title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
1601 $title = str_replace( array( '&nbsp;', '&#160;', '&ndash;', '&#8211;', '&mdash;', '&#8212;' ), '-', $title );

1602
// Strip these characters entirely
1603 // Strip these characters entirely
$title = str_replace( array(
1604 $title = str_replace( array(
// iexcl and iquest
1605 // iexcl and iquest
'%c2%a1', '%c2%bf',
1606 '%c2%a1', '%c2%bf',
// angle quotes
1607 // angle quotes
'%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
1608 '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
// curly quotes
1609 // curly quotes
'%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
1610 '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
'%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
1611 '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
// copy, reg, deg, hellip and trade
1612 // copy, reg, deg, hellip and trade
'%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
1613 '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
// grave accent, acute accent, macron, caron
1614 // acute accents
'%cc%80', '%cc%81', '%cc%84', '%cc%8c',
1615 '%c2%b4', '%cb%8a', '%cc%81', '%cd%81',
), '', $title );
1616 // grave accent, macron, caron

1617 '%cc%80', '%cc%84', '%cc%8c',
// Convert times to x
1618 ), '', $title );
$title = str_replace( '%c3%97', 'x', $title );
1619
}
1620 // Convert times to x

1621 $title = str_replace( '%c3%97', 'x', $title );
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
1622 }
$title = preg_replace('/\s+/', '-', $title);
1623
$title = preg_replace('|-+|', '-', $title);
1624 $title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = trim($title, '-');
1625 $title = str_replace('.', '-', $title);

1626
return $title;
1627 $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
}
1628 $title = preg_replace('/\s+/', '-', $title);
1629 $title = preg_replace('|-+|', '-', $title);
1630 $title = trim($title, '-');
1631
1632 return $title;
1633 }