Description

Traite spécifiquement les caractères &, <, >, ", et ‘.

Paramètres

$string

(string) (Requis) Le texte à encoder.

$quote_style

(int | string) (Optionnel)

  • ENT_COMPAT ou 'double' (ancienne valeur) : convertie les doubles guillemets.
  • ENT_QUOTES : convertie les simples et les doubles guillemets.
  • ENT_NOQUOTES : ne convertie aucuns guillemets.
  • 'single' (ancienne valeur) : convertie les simples guillemets.
  • ENT_XML1 : convertie les simples et doubles guillemets aussi bien en convertissant les entités HTML (qui ne sont pas aussi des entités XML) en leurs points de code.

Valeur par défaut : ENT_NOQUOTES

$charset

(bool | string) (Optionnel) Le caractère à encoder de la chaîne.

Valeur par défaut : false

$double_encode

(bool) (Optionnel) Pour encoder les entités HTML existantes.

Valeur par défaut : false

Retourne

(string) Le texte encodé avec des entités HTML.

Structure de la fonction _wp_specialchars()

Définie dans le fichier wp-includes/formatting.php à la ligne 934 :

function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
    $string = (string) $string;

    if ( 0 === strlen( $string ) ) {
        return '';
    }

    // Don't bother if there are no specialchars - saves some processing.
    if ( ! preg_match( '/[&<>"\']/', $string ) ) {
        return $string;
    }

    // Account for the previous behaviour of the function when the $quote_style is not an accepted value.
    if ( empty( $quote_style ) ) {
        $quote_style = ENT_NOQUOTES;
    } elseif ( ENT_XML1 === $quote_style ) {
        $quote_style = ENT_QUOTES | ENT_XML1;
    } elseif ( ! in_array( $quote_style, array( ENT_NOQUOTES, ENT_COMPAT, ENT_QUOTES, 'single', 'double' ), true ) ) {
        $quote_style = ENT_QUOTES;
    }

    // Store the site charset as a static to avoid multiple calls to wp_load_alloptions().
    if ( ! $charset ) {
        static $_charset = null;
        if ( ! isset( $_charset ) ) {
            $alloptions = wp_load_alloptions();
            $_charset   = isset( $alloptions['blog_charset'] ) ? $alloptions['blog_charset'] : '';
        }
        $charset = $_charset;
    }

    if ( in_array( $charset, array( 'utf8', 'utf-8', 'UTF8' ), true ) ) {
        $charset = 'UTF-8';
    }

    $_quote_style = $quote_style;

    if ( 'double' === $quote_style ) {
        $quote_style  = ENT_COMPAT;
        $_quote_style = ENT_COMPAT;
    } elseif ( 'single' === $quote_style ) {
        $quote_style = ENT_NOQUOTES;
    }

    if ( ! $double_encode ) {
        // Guarantee every &entity; is valid, convert &garbage; into &garbage;
        // This is required for PHP < 5.4.0 because ENT_HTML401 flag is unavailable.
        $string = wp_kses_normalize_entities( $string, ( $quote_style & ENT_XML1 ) ? 'xml' : 'html' );
    }

    $string = htmlspecialchars( $string, $quote_style, $charset, $double_encode );

    // Back-compat.
    if ( 'single' === $_quote_style ) {
        $string = str_replace( "'", '&#039;', $string );
    }

    return $string;
}

Fonctions utilisées par _wp_specialchars()

wp_kses_normalize_entities()

Convertit et répare les entités HTML.

wp_load_alloptions()

Charge et met en cache toutes les options auto-chargées si disponible ou toutes les options.

Où trouver la fonction _wp_specialchars() dans le CMS Wordpress

Sources

Codex Wordpress : _wp_specialchars()

Autres fonctions dans le même fichier : wp-includes/formatting.php

Retour