Maison >développement back-end >Problème PHP >Comment réaliser une interception chinoise sans caractères tronqués en PHP
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.
$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. .
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 :
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.
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!