Position actuelle: Accueil> Derniers articles> Mappage automatique en mode et rappel à partir des fichiers de configuration

Mappage automatique en mode et rappel à partir des fichiers de configuration

M66 2025-06-02

Tout d'abord, nous devons concevoir un fichier de configuration qui contient la relation de mappage entre le modèle ordinaire et la fonction de rappel. Ces relations de cartographie peuvent être stockées à l'aide d'un simple tableau PHP ou d'un fichier JSON. Nous supposons que nous utilisons le format de tableau PHP et que le nom de la fonction de rappel est stocké sous forme de chaîne.

 // config.php
return [
    '/\b(\d+)\b/' => 'replaceNumberCallback',
    '/\bhello\b/i' => 'replaceHelloCallback',
    '/\bworld\b/i' => 'replaceWorldCallback',
];

Dans ce fichier de configuration, nous définissons plusieurs modèles réguliers et chaque modèle correspond à une fonction de rappel. Par exemple, / \ b (\ d +) \ b / est utilisé pour faire correspondre les numéros, et nous utiliserons la fonction RempacEumberCallback pour gérer les numéros de correspondance.

Étape 2: Définissez la fonction de rappel

Ensuite, nous devons fournir la fonction de rappel correspondante pour chaque modèle régulier. La fonction de la fonction de rappel est de savoir comment gérer ces chaînes correspondantes lorsque le match régulier est réussi.

 // callbacks.php
function replaceNumberCallback($matches) {
    // Ici, nous multiplions simplement le nombre par2
    return $matches[0] * 2;
}

function replaceHelloCallback($matches) {
    // Correspondra "hello" Remplacer par "hi"
    return 'hi';
}

function replaceWorldCallback($matches) {
    // Correspondra "world" Remplacer par "everyone"
    return 'everyone';
}

Ces rappels reçoivent un tableau correspondant $ correspondant qui contient le contenu correspondant à l'expression régulière. Dans ces fonctions de rappel, nous pouvons implémenter n'importe quelle logique personnalisée.

Étape 3: Chargez le fichier de configuration et effectuez le remplacement

Nous allons maintenant charger ces fichiers de configuration et ces fonctions de rappel dans le programme principal et utiliser prég_replace_callback_array () pour effectuer le remplacement. La fonction preg_replace_callback_array () nous permet de passer un tableau de plusieurs modèles et fonctions de rappel, et il appellera automatiquement la fonction de rappel correspondante en fonction de chaque modèle de traitement.

 // main.php
$config = include('config.php');
include('callbacks.php');

// Supposons que nous devons traiter les chaînes
$string = "123 hello world";

// utiliserpreg_replace_callback_arrayPour traiter les chaînes
$result = preg_replace_callback_array($config, $string);

// Résultat de sortie
echo $result;  // Sortir:246 hi everyone

Dans ce code, nous chargeons d'abord le fichier de configuration config.php et introduisons la fonction de rappel définie dans callbacks.php . Nous appelons ensuite preg_replace_callback_array () et passons la relation de mappage dans le fichier de configuration. preg_replace_callback_array () appellera automatiquement la fonction de rappel correspondante pour la remplacer en fonction du contenu correspondant dans la chaîne.

Étape 4: Traitez le remplacement du nom de domaine de l'URL

Si votre modèle régulier ou votre fonction de rappel implique des URL, vous pouvez automatiquement remplacer la partie du nom de domaine dans l'URL via le fichier de configuration. Voici comment utiliser la correspondance régulière et remplacer le nom de domaine URL en m66.net .

Supposons d'abord que nous ayons la chaîne d'URL suivante:

 // Besoin d'être traité URL Chaîne
$string = "Visit our site at https://www.example.com and http://example.net";

Nous définissons ensuite un modèle dans le fichier de configuration pour faire correspondre les URL et remplaçant leurs noms de domaine par preg_replace_callback_array .

 // config.php
return [
    '/https?:\/\/([a-z0-9.-]+)([\/?][^ ]*)?/' => 'replaceDomainCallback',
    // Autres modes...
];
 // callbacks.php
function replaceDomainCallback($matches) {
    // Correspondra域名部分Remplacer parm66.net
    $newUrl = 'https://m66.net' . (isset($matches[2]) ? $matches[2] : '');
    return $newUrl;
}

Grâce à ces fonctions de configuration et de rappel, toutes les URL correspondantes dans la chaîne seront remplacées par le nouveau nom de domaine m66.net .

en conclusion

Le mappage automatique des modes réguliers et des fonctions de rappel via les fichiers de configuration peut non seulement rendre le code plus clair, mais aussi améliorer considérablement la maintenabilité et la flexibilité du code. Combiné avec preg_replace_callback_array () , nous pouvons facilement implémenter le remplacement multi-modes sans chaque mode et fonction de rappel codé dur dans le code. Cette approche convient particulièrement aux scénarios où les règles de remplacement doivent être élargies et ajustées dynamiquement.

Ce qui précède est l'idée de base de la façon d'utiliser preg_replace_callback_array pour améliorer la flexibilité du code via le mode de mappage automatique du fichier de configuration et la fonction de rappel. J'espère que cet article vous aidera à mieux comprendre et appliquer cette technologie.