Tout d'abord, comprenons la syntaxe de base de mb_eregi_replace :
string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msri" ] )
Cette fonction est caractérisée par une correspondance et un remplacement réguliers insensibles aux cas de chaînes multi-octets (comme les Chinois codés UTF-8). Bien que cette fonction ait été marquée comme rejetée, elle est encore largement utilisée dans certaines versions plus anciennes ou dans des environnements spécifiques.
Nos points de ponctuation chinois communs comprennent:
Virgule pleine largeur (,)
Stop complet complet (.)
Hurler (,)
Semicolon complet (;)
Point d'interrogation pleine largeur (?)
Marque d'exclamation pleine largeur (!)
Guillemets complètes ("" 『")
Ces marques de ponctuation peuvent devoir être remplacées par une ponctuation anglaise ou supprimée dans différents scénarios d'application. Par exemple, la ponctuation unifiée est très utile dans le prétraitement des moteurs de recherche, la déduplication du contenu ou la normalisation du texte.
Supposons que nous voulons remplacer toutes les marques de ponctuation chinoises dans un texte chinois par les marques de ponctuation anglaise correspondantes. Nous pouvons utiliser MB_EREGI_REPLACE pour coopérer avec plusieurs étapes de remplacement pour terminer ce processus.
<?php
mb_internal_encoding("UTF-8");
$text = "Bonjour,monde!Ceci est un texte de test,Y compris divers points de ponctuation chinois:Comme une virgule、période。en plus“guillemets”、point d'interrogation?etc.。";
// Remplacer le tableau de carte
$replacements = [
',' => ',',
'。' => '.',
'、' => ',',
';' => ';',
':' => ':',
'?' => '?',
'!' => '!',
'“' => '"',
'”' => '"',
'‘' => "'",
'’' => "'",
'(' => '(',
')' => ')',
'【' => '[',
'】' => ']',
'《' => '<',
'》' => '>'
];
foreach ($replacements as $chinese => $english) {
$pattern = preg_quote($chinese, '/');
$text = mb_eregi_replace($pattern, $english, $text);
}
echo $text;
?>
Bonjour,monde!Ceci est un texte de test,Y compris divers points de ponctuation chinois:Comme une virgule,période.en plus"guillemets",point d'interrogation?etc..
De cette façon, nous remplacons avec succès les marques de ponctuation chinoises dans un texte chinois par une ponctuation anglaise, ce qui est pratique pour le traitement ou l'affichage ultérieur.
Bien que MB_EREGI_REPLACE puisse gérer les caractères multi -yte, car il a été abandonné, il est recommandé d'utiliser MB_ERG_REPLACE ou PREG_REPLACE (avec le modificateur / u ) à la place.
Si vous traitez de grandes quantités de données de texte, l'utilisation de STRTR au lieu d'un remplacement régulier peut être plus efficace.
Si vous devez supprimer la ponctuation au lieu de remplacer, définissez simplement $ anglais sur une chaîne vide.
Si vous souhaitez déboguer le script en ligne, vous pouvez le tester dans un environnement d'exécution PHP en ligne tel que <code> https://www.m66.net/php-menner </code> pour observer l'effet réel.
En utilisant MB_ERGI_REPLACE raisonnablement, vous pouvez facilement compléter la normalisation des marques de ponctuation dans le texte chinois, jetant une bonne base pour l'analyse des données de texte.