Maison >développement back-end >Problème PHP >Comment réaliser une interception chinoise sans caractères tronqués en PHP

Comment réaliser une interception chinoise sans caractères tronqués en PHP

PHPz
PHPzoriginal
2023-03-31 09:06:151167parcourir

PHP est un langage de programmation côté serveur populaire largement utilisé dans le développement d'applications Web. Dans les applications Web, nous devons souvent intercepter des chaînes sans détruire les caractères chinois. Cependant, la méthode traditionnelle d'interception de chaînes PHP provoque souvent des problèmes tels que des caractères chinois tronqués. Cet article explique comment réaliser une interception chinoise sans caractères tronqués via PHP.

1. Problèmes avec les méthodes d'interception traditionnelles

En PHP, il existe de nombreuses méthodes pour intercepter des chaînes, les plus courantes incluent substr(), mb_substr(), iconv_substr(), etc. Cependant, lors de l'interception de chaînes chinoises, ces méthodes entraînent souvent des problèmes tels que des caractères chinois tronqués ou une interception inexacte. Regardons quelques exemples ci-dessous.

  1. Utilisez la fonction substr() pour intercepter les chaînes chinoises

$str = "J'adore programmer, programmer me rend heureux !";
$substr = substr($str, 0, 6);
echo $substr;
?>

Le code ci-dessus affichera "J'aime programmer" sans caractères chinois tronqués. Cependant, si l'on essaie d'intercepter les caractères chinois "programmation", il y aura des problèmes pour utiliser la fonction substr() :

$str = "J'adore programmer, programmer me rend heureux !";
$substr = substr( $str, 3, 6);
echo $substr;
?>

Le code ci-dessus affichera "Cheng, Programming", et le caractère chinois "Programming" est tronqué. Ce résultat n'est évidemment pas ce que nous voulons. .

  1. Utilisez la fonction mb_substr() pour intercepter les chaînes chinoises

La fonction mb_substr() est une fonction d'interception de chaînes intégrée à PHP. Elle prend en charge les caractères multi-octets et peut éviter le problème des caractères chinois tronqués. Jetons d'abord un coup d'œil à l'utilisation de base de la fonction mb_substr() :

$str = "J'adore programmer, programmer me rend heureux !";
$substr = mb_substr($str, 0, 6 , 'utf -8');
echo $substr;
?>

Le code ci-dessus affichera "J'aime programmer" sans caractères chinois tronqués. Cependant, si l'on essaie d'intercepter les caractères chinois "programmation", l'utilisation de la fonction mb_substr() posera également des problèmes :

$str = "J'adore programmer, programmer me rend heureux !";
$substr = mb_substr( $str, 3, 6, 'utf-8');
echo $substr;
?>

Le code ci-dessus affichera "Cheng", et le caractère chinois "programmation" est tronqué.

2. Solution

Compte tenu des problèmes des méthodes d'interception traditionnelles, nous pouvons utiliser la méthode suivante pour réaliser une interception chinoise sans caractères tronqués :

  1. Convertir les chaînes chinoises en codage UTF-8

En PHP, nous pouvons utiliser La fonction mb_convert_encoding() convertit les chaînes chinoises en codage UTF-8. UTF-8 est un codage de caractères Unicode de longueur variable qui peut représenter presque tous les caractères du monde, y compris les caractères chinois. Nous pouvons d'abord convertir la chaîne chinoise en codage UTF-8, afin que les caractères chinois puissent être traités correctement lors de l'interception de la chaîne. Voici un exemple :

$str = "J'adore programmer, programmer me rend heureux !";
$str = mb_convert_encoding($str, 'UTF-8', 'auto');
echo $ str;
?>

Le code ci-dessus convertira la chaîne $str en sortie codée UTF-8.

  1. Utilisez la fonction mb_substr() pour intercepter la chaîne

Après avoir converti la chaîne chinoise en codage UTF-8, nous pouvons utiliser la fonction mb_substr() pour intercepter la chaîne. L'utilisation de la fonction mb_substr() est la même que celle décrite précédemment et vous devez spécifier des paramètres tels que la chaîne, la position de départ, la longueur et la méthode d'encodage. Voici un exemple :

$str = "J'adore programmer, programmer me rend heureux !";
$str = mb_convert_encoding($str, 'UTF-8', 'auto');
$substr = mb_substr($str, 3, 6, 'utf-8');
echo $substr;
?>

Le code ci-dessus affichera une "programmation" et les caractères chinois sont interceptés correctement.

3. Résumé

L'interception de chaînes chinoises a toujours été un problème gênant. La méthode traditionnelle d'interception de chaînes PHP entraîne souvent des caractères chinois tronqués ou une interception inexacte. En convertissant la chaîne chinoise en codage UTF-8, nous pouvons utiliser la fonction mb_substr() pour intercepter la chaîne, résolvant ainsi le problème de l'interception chinoise sans caractères tronqués.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn