web-dev-qa-db-fra.com

Ajouter des espaces entre les lettres chinoises et autres

Je souhaite ajouter un espace entre un caractère chinois et une lettre ou un chiffre pour rendre l'article plus lisible.

Par exemple:

Google Apple 的 专 大 在 2 结束。

Google Apple 的 专 大 在 2 结束。

Mais ajouter manuellement l’espace est un travail difficile. Comment puis-je le faire automatiquement? Peut-être avec CSS?

5
比尔盖子

Question interessante. Cela pourrait être une partie utile d'un fichier de langue spécifique . Cela ne peut pas être fait en CSS, car CSS est (principalement) agnostique des caractères. Mais en utilisant un filtre et PHP il est possible et sur le sujet:

add_filter( 'the_content', 't5_chinese_spacing' );

function t5_chinese_spacing( $content )
{
    return preg_replace(
        '~([^\p{Han}]*)(\p{Han}+)([^\p{Han}])~imUxu',
        '\1 \2 \3',
        $content
    );
}

Sachez que votre codage interne doit être UTF-8 pour que cela fonctionne. Bien que WordPress fonctionne aussi avec d’autres encodages, PHP a besoin de UTF-8 pour cela. Lisez la configuration du jeu de caractères et de la collation de la base de données WordPress pour vous assurer que tout est configuré correctement.

Notez également que j’utilise la classe de caractères de PHP pour l’unification de Han ici. Ce n'est pas parfait, certains signes de ponctuation que les écrivains chinois pourraient utiliser ne sont pas inclus.

6
fuxia