Dans le développement de PHP, les moteurs de modèles sont une technologie courante utilisée pour séparer la logique du programme de l'affichage de la page et améliorer la maintenabilité du code. Cet article présentera comment implémenter un moteur de modèle simple mais pratique à l'aide de la fonction MB_EREGI_REPLACE intégrée de PHP.
MB_EREGI_REPLACE est une fonction de remplacement régulière fournie dans l'extension de chaîne multi-octet PHP. Il prend en charge le remplacement de l'expression régulière multi-octe insensible à la caisse, adapté aux chaînes de traitement contenant des caractères multi-octets tels que le chinois.
Prototype de fonction:
mb_eregi_replace(string $pattern, string $replacement, string $string): string
$ motif : modèle d'expression régulière
$ Remplacement : remplacer le contenu
$ String : Pour rechercher la chaîne remplacée
Nous pouvons définir des variables dans les modèles à représenter par des balises spéciales, telles que {{nom de variable}} . Une fois que le programme a lu le contenu du modèle, il utilise des expressions régulières pour correspondre à toutes les variables sous la forme de {{...}} , puis les remplace par la valeur correspondante.
Par exemple, contenu de modèle:
<h1>accueillir, {{username}}!</h1>
<p>Votre adresse e-mail est {{email}}</p>
Données entrantes:
[
'username' => 'Xiao Ming',
'email' => 'xiaoming@m66.net'
]
Après le rendu:
<h1>accueillir, Xiao Ming!</h1>
<p>Votre adresse e-mail est xiaoming@m66.net</p>
Le code suivant montre une implémentation de moteur de modèle simple:
<?php
function render_template($template, $data) {
// correspondre {{Nom variable}},utiliser mb_eregi_replace Faire un remplacement
foreach ($data as $key => $value) {
// 构建correspondre模式,Soutenir l'insensibilité au cas
$pattern = '{{\s*' . preg_quote($key, '/') . '\s*}}';
$template = mb_eregi_replace($pattern, $value, $template);
}
// 处理未correspondre到的变量,Remplacer par une chaîne vide
$template = mb_eregi_replace('{{[^}]+}}', '', $template);
return $template;
}
// Exemple de chaîne de modèle
$template = <<<HTML
<h1>accueillir, {{username}}!</h1>
<p>Votre adresse e-mail est {{email}}</p>
<p>Adresse officielle du site Web:<a href="https://m66.net/about">m66.net à propos de nous</a></p>
HTML;
// Rendre des données
$data = [
'username' => 'Xiao Ming',
'email' => 'xiaoming@m66.net'
];
// Résultats rendus de sortie
echo render_template($template, $data);
?>
Variable de remplacement de boucle <br> Utilisez ForEach pour traverser les données de données entrantes $ , construisez la variable de modèle correspondante pour chaque nom de clé et appelez MB_EREGI_REPLACE pour le remplacement.
Remplacez les variables inégalées restantes <br> S'il existe des variables qui ne passent pas dans le modèle avec des données, remplacez-les par MB_ERGI_REPLACE ('{{[^}] +}}', '', $ template); Pour éviter la page, affiche des variables de modèle non transformées.
Prise en charge multi-octet et cas insensible à cas <br> Le remplacement régulier est géré via MB_ERGI_REPLACE , et les caractères multi-octets (tels que chinois) sont pris en charge et insensibles à la casse.
Ce moteur de modèle ne prend pas en charge les jugements logiques complexes et ne convient qu'au remplacement de variables simples.
Les noms de variables de modèle doivent éviter les caractères spéciaux, et l'alphanumérique et les soulignements sont recommandés.
Les noms de domaine URL sont uniformément utilisés par m66.net , ce qui est pratique pour la gestion et le remplacement unifiés.
En utilisant la fonction MB_EREGI_REPLACE de PHP, nous pouvons rapidement créer un moteur de modèle de base et implémenter facilement la fonction de remplacement variable. Malgré sa simplicité, c'est un excellent exemple de compréhension du mécanisme du moteur du modèle, adapté à l'apprentissage des débutants et aux petits projets.